{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "celltoolbar": "Slideshow",
    "kernelspec": {
      "display_name": "Python [conda env:tf2p0]",
      "language": "python",
      "name": "conda-env-tf2p0-py"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.9"
    },
    "rise": {
      "enable_chalkboard": true,
      "footer": "<h4>&nbsp Dr Amita Kapoor</h4>",
      "header": "<h2>&nbsp AI+ Training </h2>",
      "height": "70%",
      "leap_motion": {
        "naturalSwipe": true,
        "pointerColor": "#d80000",
        "pointerOpacity": 0.6
      },
      "scroll": true,
      "start_slideshow_at": "beginning",
      "theme": "moon",
      "transistion": "zoom",
      "width": "90%"
    },
    "colab": {
      "name": "Copy of Module-2.1-Introduction-to-gym.ipynb",
      "provenance": []
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:51.524509Z",
          "start_time": "2021-07-14T11:39:51.520867Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "JVoTjMUObP8S",
        "outputId": "c1987225-d059-46d9-d2df-7d60c0a21968"
      },
      "source": [
        "# In colab please uncomment this to install Atari \n",
        "# Box2d is a 2D physics engine.\n",
        "!pip install box2d-py"
      ],
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Requirement already satisfied: box2d-py in /usr/local/lib/python3.7/dist-packages (2.3.8)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:51.531956Z",
          "start_time": "2021-07-14T11:39:51.528961Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Wo9oQotsbP8T",
        "outputId": "b811c594-3f10-42b2-905b-4bb6a2eef16d"
      },
      "source": [
        "# And for visualization on Colab install\n",
        "!pip install pyglet\n",
        "!apt-get install -y xvfb python-opengl > /dev/null 2>&1\n",
        "!pip install gym pyvirtualdisplay > /dev/null 2>&1\n"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Requirement already satisfied: pyglet in /usr/local/lib/python3.7/dist-packages (1.5.0)\n",
            "Requirement already satisfied: future in /usr/local/lib/python3.7/dist-packages (from pyglet) (0.16.0)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:51.750040Z",
          "start_time": "2021-07-14T11:39:51.535437Z"
        },
        "id": "_NRtJ61ubP8W"
      },
      "source": [
        "import gym"
      ],
      "execution_count": 29,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:52.374378Z",
          "start_time": "2021-07-14T11:39:51.752592Z"
        },
        "id": "ZxCU2DYjbP8X"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "from IPython import display as ipythondisplay  ## Needed on colab"
      ],
      "execution_count": 30,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:52.379624Z",
          "start_time": "2021-07-14T11:39:52.376689Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "pW0IO-enbP8e",
        "outputId": "7fe999af-e81e-493b-ed19-c90777a8b46d"
      },
      "source": [
        "## Need to set a virtual Display on colab, else ipythondisplay would not work\n",
        "from pyvirtualdisplay import Display\n",
        "display = Display(visible=0, size=(400, 300))\n",
        "display.start()"
      ],
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<pyvirtualdisplay.display.Display at 0x7f4c0423f190>"
            ]
          },
          "metadata": {},
          "execution_count": 31
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AFiwYdBKbP8f"
      },
      "source": [
        "## Physics Engine"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:53.566158Z",
          "start_time": "2021-07-14T11:39:52.384291Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 287
        },
        "id": "2hnT0Z87bP8f",
        "outputId": "c37454de-d0fc-41ad-9642-aeb8300c1f56"
      },
      "source": [
        "env = gym.make('LunarLander-v2')\n",
        "obs = env.reset() \n",
        "img = env.render(mode='rgb_array')\n",
        "env.close()\n",
        "plt.imshow(img)\n",
        "#ipythondisplay.clear_output(wait=True)  #Colab"
      ],
      "execution_count": 32,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f4c0420c450>"
            ]
          },
          "metadata": {},
          "execution_count": 32
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jnp5PMv6bP8h"
      },
      "source": [
        "# Classic Control "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:53.927174Z",
          "start_time": "2021-07-14T11:39:53.570279Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 287
        },
        "id": "A_E2Iaw6bP8h",
        "outputId": "960ce17c-d348-47a9-cd0a-eedc0a6fdf91"
      },
      "source": [
        "env = gym.make('CartPole-v0')\n",
        "env.reset()\n",
        "img = env.render(mode='rgb_array')\n",
        "env.close()\n",
        "plt.imshow(img)"
      ],
      "execution_count": 33,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f4c04064710>"
            ]
          },
          "metadata": {},
          "execution_count": 33
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eAexBscCbP8i"
      },
      "source": [
        "## Atari Games"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Y4IF8rRvbp70",
        "outputId": "dd128477-3f9b-42d3-ca7d-7196aae8dae5"
      },
      "source": [
        "!wget http://www.atarimania.com/roms/Roms.rar\n",
        "!mkdir /content/ROM/\n",
        "!unrar e /content/Roms.rar /content/ROM/\n",
        "!python -m atari_py.import_roms /content/ROM/"
      ],
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "--2022-03-25 16:15:37--  http://www.atarimania.com/roms/Roms.rar\n",
            "Resolving www.atarimania.com (www.atarimania.com)... 195.154.81.199\n",
            "Connecting to www.atarimania.com (www.atarimania.com)|195.154.81.199|:80... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 11128004 (11M) [application/x-rar-compressed]\n",
            "Saving to: ‘Roms.rar.1’\n",
            "\n",
            "Roms.rar.1          100%[===================>]  10.61M   721KB/s    in 16s     \n",
            "\n",
            "2022-03-25 16:15:53 (688 KB/s) - ‘Roms.rar.1’ saved [11128004/11128004]\n",
            "\n",
            "mkdir: cannot create directory ‘/content/ROM/’: File exists\n",
            "\n",
            "UNRAR 5.50 freeware      Copyright (c) 1993-2017 Alexander Roshal\n",
            "\n",
            "\n",
            "Extracting from /content/Roms.rar\n",
            "\n",
            "\n",
            "Would you like to replace the existing file /content/ROM/HC ROMS.zip\n",
            "11826711 bytes, modified on 2019-12-22 11:24\n",
            "with a new one\n",
            "11826711 bytes, modified on 2019-12-22 11:24\n",
            "\n",
            "[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit N\n",
            "\n",
            "\n",
            "Would you like to replace the existing file /content/ROM/ROMS.zip\n",
            "8181588 bytes, modified on 2019-12-22 11:23\n",
            "with a new one\n",
            "8181588 bytes, modified on 2019-12-22 11:23\n",
            "\n",
            "[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit N\n",
            "\n",
            "No files to extract\n",
            "copying adventure.bin from ROMS/Adventure (1980) (Atari, Warren Robinett) (CX2613, CX2613P) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/adventure.bin\n",
            "copying air_raid.bin from ROMS/Air Raid (Men-A-Vision) (PAL) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/air_raid.bin\n",
            "copying alien.bin from ROMS/Alien (1982) (20th Century Fox Video Games, Douglas 'Dallas North' Neubauer) (11006) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/alien.bin\n",
            "copying amidar.bin from ROMS/Amidar (1982) (Parker Brothers, Ed Temple) (PB5310) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/amidar.bin\n",
            "copying assault.bin from ROMS/Assault (AKA Sky Alien) (1983) (Bomb - Onbase) (CA281).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/assault.bin\n",
            "copying asterix.bin from ROMS/Asterix (AKA Taz) (07-27-1983) (Atari, Jerome Domurat, Steve Woita) (CX2696) (Prototype).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/asterix.bin\n",
            "copying asteroids.bin from ROMS/Asteroids (1981) (Atari, Brad Stewart - Sears) (CX2649 - 49-75163) [no copyright] ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/asteroids.bin\n",
            "copying atlantis.bin from ROMS/Atlantis (Lost City of Atlantis) (1982) (Imagic, Dennis Koble) (720103-1A, 720103-1B, IA3203, IX-010-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/atlantis.bin\n",
            "copying bank_heist.bin from ROMS/Bank Heist (Bonnie & Clyde, Cops 'n' Robbers, Hold-Up, Roaring 20's) (1983) (20th Century Fox Video Games, Bill Aspromonte) (11012) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/bank_heist.bin\n",
            "copying battle_zone.bin from ROMS/Battlezone (1983) (Atari - GCC, Mike Feinstein, Brad Rice) (CX2681) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/battle_zone.bin\n",
            "copying beam_rider.bin from ROMS/Beamrider (1984) (Activision - Cheshire Engineering, David Rolfe, Larry Zwick) (AZ-037-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/beam_rider.bin\n",
            "copying berzerk.bin from ROMS/Berzerk (1982) (Atari, Dan Hitchens - Sears) (CX2650 - 49-75168) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/berzerk.bin\n",
            "copying bowling.bin from ROMS/Bowling (1979) (Atari, Larry Kaplan - Sears) (CX2628 - 6-99842, 49-75117) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/bowling.bin\n",
            "copying boxing.bin from ROMS/Boxing - La Boxe (1980) (Activision, Bob Whitehead) (AG-002, CAG-002, AG-002-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/boxing.bin\n",
            "copying breakout.bin from ROMS/Breakout - Breakaway IV (Paddle) (1978) (Atari, Brad Stewart - Sears) (CX2622 - 6-99813, 49-75107) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/breakout.bin\n",
            "copying carnival.bin from ROMS/Carnival (1982) (Coleco - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen) (2468) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/carnival.bin\n",
            "copying centipede.bin from ROMS/Centipede (1983) (Atari - GCC) (CX2676) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/centipede.bin\n",
            "copying chopper_command.bin from ROMS/Chopper Command (1982) (Activision, Bob Whitehead) (AX-015, AX-015-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/chopper_command.bin\n",
            "copying crazy_climber.bin from ROMS/Crazy Climber (1983) (Atari - Roklan, Joe Gaucher, Alex Leavens) (CX2683) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/crazy_climber.bin\n",
            "copying defender.bin from ROMS/Defender (1982) (Atari, Robert C. Polaro, Alan J. Murphy - Sears) (CX2609 - 49-75186) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/defender.bin\n",
            "copying demon_attack.bin from ROMS/Demon Attack (Death from Above) (1982) (Imagic, Rob Fulop) (720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/demon_attack.bin\n",
            "copying donkey_kong.bin from ROMS/Donkey Kong (1982) (Coleco - Woodside Design Associates - Imaginative Systems Software, Garry Kitchen) (2451) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/donkey_kong.bin\n",
            "copying double_dunk.bin from ROMS/Double Dunk (Super Basketball) (1989) (Atari, Matthew L. Hubbard) (CX26159) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/double_dunk.bin\n",
            "copying elevator_action.bin from ROMS/Elevator Action (1983) (Atari, Dan Hitchens) (CX26126) (Prototype) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/elevator_action.bin\n",
            "copying enduro.bin from ROMS/Enduro (1983) (Activision, Larry Miller) (AX-026, AX-026-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/enduro.bin\n",
            "copying fishing_derby.bin from ROMS/Fishing Derby (1980) (Activision, David Crane) (AG-004) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/fishing_derby.bin\n",
            "copying freeway.bin from ROMS/Freeway (1981) (Activision, David Crane) (AG-009, AG-009-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/freeway.bin\n",
            "copying frogger.bin from ROMS/Frogger (1982) (Parker Brothers, Ed English, David Lamkins) (PB5300) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/frogger.bin\n",
            "copying frostbite.bin from ROMS/Frostbite (1983) (Activision, Steve Cartwright) (AX-031) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/frostbite.bin\n",
            "copying galaxian.bin from ROMS/Galaxian (1983) (Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker) (CX2684) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/galaxian.bin\n",
            "copying gopher.bin from ROMS/Gopher (Gopher Attack) (1982) (U.S. Games Corporation - JWDA, Sylvia Day, Todd Marshall, Robin McDaniel, Henry Will IV) (VC2001) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/gopher.bin\n",
            "copying gravitar.bin from ROMS/Gravitar (1983) (Atari, Dan Hitchens, Mimi Nyden) (CX2685) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/gravitar.bin\n",
            "copying hero.bin from ROMS/H.E.R.O. (1984) (Activision, John Van Ryzin) (AZ-036-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/hero.bin\n",
            "copying ice_hockey.bin from ROMS/Ice Hockey - Le Hockey Sur Glace (1981) (Activision, Alan Miller) (AX-012, CAX-012, AX-012-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/ice_hockey.bin\n",
            "copying jamesbond.bin from ROMS/James Bond 007 (James Bond Agent 007) (1984) (Parker Brothers - On-Time Software, Joe Gaucher, Louis Marbel) (PB5110) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/jamesbond.bin\n",
            "copying journey_escape.bin from ROMS/Journey Escape (1983) (Data Age, J. Ray Dettling) (112-006) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/journey_escape.bin\n",
            "copying kaboom.bin from ROMS/Kaboom! (Paddle) (1981) (Activision, Larry Kaplan, David Crane) (AG-010, AG-010-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/kaboom.bin\n",
            "copying kangaroo.bin from ROMS/Kangaroo (1983) (Atari - GCC, Kevin Osborn) (CX2689) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/kangaroo.bin\n",
            "copying keystone_kapers.bin from ROMS/Keystone Kapers - Raueber und Gendarm (1983) (Activision, Garry Kitchen - Ariola) (EAX-025, EAX-025-04I - 711 025-725) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/keystone_kapers.bin\n",
            "copying king_kong.bin from ROMS/King Kong (1982) (Tigervision - Software Electronics Corporation, Karl T. Olinger - Teldec) (7-001 - 3.60001 VE) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/king_kong.bin\n",
            "copying koolaid.bin from ROMS/Kool-Aid Man (Kool Aid Pitcher Man) (1983) (M Network, Stephen Tatsumi, Jane Terjung - Kool Aid) (MT4648) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/koolaid.bin\n",
            "copying krull.bin from ROMS/Krull (1983) (Atari, Jerome Domurat, Dave Staugas) (CX2682) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/krull.bin\n",
            "copying kung_fu_master.bin from ROMS/Kung-Fu Master (1987) (Activision - Imagineering, Dan Kitchen, Garry Kitchen) (AG-039-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/kung_fu_master.bin\n",
            "copying laser_gates.bin from ROMS/Laser Gates (AKA Innerspace) (1983) (Imagic, Dan Oliver) (720118-2A, 13208, EIX-007-04I) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/laser_gates.bin\n",
            "copying lost_luggage.bin from ROMS/Lost Luggage (Airport Mayhem) (1982) (Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo) (AP-2004) [no opening scene] ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/lost_luggage.bin\n",
            "copying montezuma_revenge.bin from ROMS/Montezuma's Revenge - Featuring Panama Joe (1984) (Parker Brothers - JWDA, Henry Will IV) (PB5760) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/montezuma_revenge.bin\n",
            "copying mr_do.bin from ROMS/Mr. Do! (1983) (CBS Electronics, Ed English) (4L4478) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/mr_do.bin\n",
            "copying ms_pacman.bin from ROMS/Ms. Pac-Man (1983) (Atari - GCC, Mark Ackerman, Glenn Parker) (CX2675) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/ms_pacman.bin\n",
            "copying name_this_game.bin from ROMS/Name This Game (Guardians of Treasure) (1983) (U.S. Games Corporation - JWDA, Roger Booth, Sylvia Day, Ron Dubren, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV) (VC1007) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/name_this_game.bin\n",
            "copying pacman.bin from ROMS/Pac-Man (1982) (Atari, Tod Frye) (CX2646) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/pacman.bin\n",
            "copying phoenix.bin from ROMS/Phoenix (1983) (Atari - GCC, Mike Feinstein, John Mracek) (CX2673) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/phoenix.bin\n",
            "copying video_pinball.bin from ROMS/Pinball (AKA Video Pinball) (Zellers).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/video_pinball.bin\n",
            "copying pitfall.bin from ROMS/Pitfall! - Pitfall Harry's Jungle Adventure (Jungle Runner) (1982) (Activision, David Crane) (AX-018, AX-018-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/pitfall.bin\n",
            "copying pooyan.bin from ROMS/Pooyan (1983) (Konami) (RC 100-X 02) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/pooyan.bin\n",
            "copying private_eye.bin from ROMS/Private Eye (1984) (Activision, Bob Whitehead) (AG-034-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/private_eye.bin\n",
            "copying qbert.bin from ROMS/Q-bert (1983) (Parker Brothers - Western Technologies, Dave Hampton, Tom Sloper) (PB5360) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/qbert.bin\n",
            "copying riverraid.bin from ROMS/River Raid (1982) (Activision, Carol Shaw) (AX-020, AX-020-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/riverraid.bin\n",
            "copying road_runner.bin from patched version of ROMS/Road Runner (1989) (Atari - Bobco, Robert C. Polaro) (CX2663) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/road_runner.bin\n",
            "copying robotank.bin from ROMS/Robot Tank (Robotank) (1983) (Activision, Alan Miller) (AZ-028, AG-028-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/robotank.bin\n",
            "copying seaquest.bin from ROMS/Seaquest (1983) (Activision, Steve Cartwright) (AX-022) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/seaquest.bin\n",
            "copying sir_lancelot.bin from ROMS/Sir Lancelot (1983) (Xonox - K-Tel Software - Product Guild, Anthony R. Henderson) (99006, 6220) (PAL).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/sir_lancelot.bin\n",
            "copying skiing.bin from ROMS/Skiing - Le Ski (1980) (Activision, Bob Whitehead) (AG-005, CAG-005, AG-005-04) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/skiing.bin\n",
            "copying solaris.bin from ROMS/Solaris (The Last Starfighter, Star Raiders II, Universe) (1986) (Atari, Douglas Neubauer, Mimi Nyden) (CX26136) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/solaris.bin\n",
            "copying space_invaders.bin from ROMS/Space Invaders (1980) (Atari, Richard Maurer - Sears) (CX2632 - 49-75153) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/space_invaders.bin\n",
            "copying star_gunner.bin from ROMS/Stargunner (1983) (Telesys, Alex Leavens) (1005) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/star_gunner.bin\n",
            "copying surround.bin from ROMS/Surround (32 in 1) (Bit Corporation) (R320).bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/surround.bin\n",
            "copying tennis.bin from ROMS/Tennis - Le Tennis (1981) (Activision, Alan Miller) (AG-007, CAG-007) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/tennis.bin\n",
            "copying time_pilot.bin from ROMS/Time Pilot (1983) (Coleco - Woodside Design Associates, Harley H. Puthuff Jr.) (2663) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/time_pilot.bin\n",
            "copying trondead.bin from ROMS/TRON - Deadly Discs (TRON Joystick) (1983) (M Network - INTV - APh Technological Consulting, Jeff Ronne, Brett Stutz) (MT5662) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/trondead.bin\n",
            "copying tutankham.bin from ROMS/Tutankham (1983) (Parker Brothers, Dave Engman, Dawn Stockbridge) (PB5340) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/tutankham.bin\n",
            "copying up_n_down.bin from ROMS/Up 'n Down (1984) (SEGA - Beck-Tech, Steve Beck, Phat Ho) (009-01) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/up_n_down.bin\n",
            "copying venture.bin from ROMS/Venture (1982) (Coleco, Joseph Biel) (2457) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/venture.bin\n",
            "copying pong.bin from ROMS/Video Olympics - Pong Sports (Paddle) (1977) (Atari, Joe Decuir - Sears) (CX2621 - 99806, 6-99806, 49-75104) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/pong.bin\n",
            "copying wizard_of_wor.bin from ROMS/Wizard of Wor (1982) (CBS Electronics - Roklan, Joe Hellesen, Joe Wagner) (M8774, M8794) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/wizard_of_wor.bin\n",
            "copying yars_revenge.bin from ROMS/Yars' Revenge (Time Freeze) (1982) (Atari, Howard Scott Warshaw - Sears) (CX2655 - 49-75167) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/yars_revenge.bin\n",
            "copying zaxxon.bin from ROMS/Zaxxon (1983) (Coleco) (2454) ~.bin to /usr/local/lib/python3.7/dist-packages/atari_py/atari_roms/zaxxon.bin\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:54.367184Z",
          "start_time": "2021-07-14T11:39:53.930709Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 287
        },
        "id": "qnE2ZOUabP8i",
        "outputId": "69062812-8169-4f80-aeff-e2104306d329"
      },
      "source": [
        "env = gym.make('SpaceInvaders-v0')\n",
        "env.reset()\n",
        "img = env.render(mode='rgb_array')\n",
        "env.close()\n",
        "plt.imshow(img)"
      ],
      "execution_count": 35,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f4c04137110>"
            ]
          },
          "metadata": {},
          "execution_count": 35
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:39:54.375478Z",
          "start_time": "2021-07-14T11:39:54.369736Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fd6neglGbP8j",
        "outputId": "3b0224bf-e590-46b2-c6b6-36c0eb632d4b"
      },
      "source": [
        "from gym import envs\n",
        "\n",
        "envall = envs.registry.all()\n",
        "len(envall)"
      ],
      "execution_count": 36,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "859"
            ]
          },
          "metadata": {},
          "execution_count": 36
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:24.938902Z",
          "start_time": "2021-07-14T11:39:54.378389Z"
        },
        "scrolled": true,
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PA6aX3JhbP8k",
        "outputId": "6a0ec540-247b-45b3-c420-292cc1d06ff0"
      },
      "source": [
        "from tqdm import tqdm\n",
        "List = []\n",
        "for e in tqdm(envall):\n",
        "    try:\n",
        "        env = e.make()\n",
        "        List.append([e.id, env.observation_space, env.action_space, env.reward_range])\n",
        "        env.close() \n",
        "    except:\n",
        "        continue     \n",
        "    \n"
      ],
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "  0%|          | 0/859 [00:00<?, ?it/s]/usr/local/lib/python3.7/dist-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n",
            "  warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n",
            "100%|██████████| 859/859 [02:56<00:00,  4.87it/s]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:24.972840Z",
          "start_time": "2021-07-14T11:42:24.941415Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 677
        },
        "id": "xNwONx_RbP8k",
        "outputId": "8a63b2cd-21e5-4591-821b-904ea852f89c"
      },
      "source": [
        "df = pd.DataFrame(List, columns= ['Environment', 'Observation Space', 'Action Space', 'Reward'])\n",
        "df.sample(20)"
      ],
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                          Environment                  Observation Space  \\\n",
              "163           BerzerkDeterministic-v4  Box(0, 255, (210, 160, 3), uint8)   \n",
              "520                           Pong-v0  Box(0, 255, (210, 160, 3), uint8)   \n",
              "303  ElevatorAction-ramNoFrameskip-v4         Box(0, 255, (128,), uint8)   \n",
              "266        Defender-ramNoFrameskip-v0         Box(0, 255, (128,), uint8)   \n",
              "21                   FrozenLake8x8-v0                       Discrete(64)   \n",
              "490               NameThisGame-ram-v0         Box(0, 255, (128,), uint8)   \n",
              "134       BankHeist-ramNoFrameskip-v0         Box(0, 255, (128,), uint8)   \n",
              "430                   Kangaroo-ram-v0         Box(0, 255, (128,), uint8)   \n",
              "101                      Asteroids-v4  Box(0, 255, (210, 160, 3), uint8)   \n",
              "253  CrazyClimber-ramDeterministic-v4         Box(0, 255, (128,), uint8)   \n",
              "342         FrostbiteDeterministic-v0  Box(0, 255, (210, 160, 3), uint8)   \n",
              "65                          Amidar-v4  Box(0, 255, (210, 160, 3), uint8)   \n",
              "747     WizardOfWor-ramNoFrameskip-v4         Box(0, 255, (128,), uint8)   \n",
              "231       Centipede-ramNoFrameskip-v4         Box(0, 255, (128,), uint8)   \n",
              "772                      CubeCrash-v0    Box(0, 255, (40, 32, 3), uint8)   \n",
              "1                       RepeatCopy-v0                        Discrete(6)   \n",
              "212            CarnivalNoFrameskip-v0  Box(0, 255, (214, 160, 3), uint8)   \n",
              "475          MsPacmanDeterministic-v4  Box(0, 255, (210, 160, 3), uint8)   \n",
              "575                  Riverraid-ram-v4         Box(0, 255, (128,), uint8)   \n",
              "719                    Venture-ram-v4         Box(0, 255, (128,), uint8)   \n",
              "\n",
              "                                Action Space       Reward  \n",
              "163                             Discrete(18)  (-inf, inf)  \n",
              "520                              Discrete(6)  (-inf, inf)  \n",
              "303                             Discrete(18)  (-inf, inf)  \n",
              "266                             Discrete(18)  (-inf, inf)  \n",
              "21                               Discrete(4)       (0, 1)  \n",
              "490                              Discrete(6)  (-inf, inf)  \n",
              "134                             Discrete(18)  (-inf, inf)  \n",
              "430                             Discrete(18)  (-inf, inf)  \n",
              "101                             Discrete(14)  (-inf, inf)  \n",
              "253                              Discrete(9)  (-inf, inf)  \n",
              "342                             Discrete(18)  (-inf, inf)  \n",
              "65                              Discrete(10)  (-inf, inf)  \n",
              "747                             Discrete(10)  (-inf, inf)  \n",
              "231                             Discrete(18)  (-inf, inf)  \n",
              "772                              Discrete(3)  (-inf, inf)  \n",
              "1    (Discrete(2), Discrete(2), Discrete(5))  (-inf, inf)  \n",
              "212                              Discrete(6)  (-inf, inf)  \n",
              "475                              Discrete(9)  (-inf, inf)  \n",
              "575                             Discrete(18)  (-inf, inf)  \n",
              "719                             Discrete(18)  (-inf, inf)  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-8158f165-bbcd-4529-bf11-32d64a006c4d\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Environment</th>\n",
              "      <th>Observation Space</th>\n",
              "      <th>Action Space</th>\n",
              "      <th>Reward</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>163</th>\n",
              "      <td>BerzerkDeterministic-v4</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>520</th>\n",
              "      <td>Pong-v0</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>303</th>\n",
              "      <td>ElevatorAction-ramNoFrameskip-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>266</th>\n",
              "      <td>Defender-ramNoFrameskip-v0</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>FrozenLake8x8-v0</td>\n",
              "      <td>Discrete(64)</td>\n",
              "      <td>Discrete(4)</td>\n",
              "      <td>(0, 1)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>490</th>\n",
              "      <td>NameThisGame-ram-v0</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>134</th>\n",
              "      <td>BankHeist-ramNoFrameskip-v0</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>430</th>\n",
              "      <td>Kangaroo-ram-v0</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>101</th>\n",
              "      <td>Asteroids-v4</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(14)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>253</th>\n",
              "      <td>CrazyClimber-ramDeterministic-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>342</th>\n",
              "      <td>FrostbiteDeterministic-v0</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>65</th>\n",
              "      <td>Amidar-v4</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>747</th>\n",
              "      <td>WizardOfWor-ramNoFrameskip-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(10)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>231</th>\n",
              "      <td>Centipede-ramNoFrameskip-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>772</th>\n",
              "      <td>CubeCrash-v0</td>\n",
              "      <td>Box(0, 255, (40, 32, 3), uint8)</td>\n",
              "      <td>Discrete(3)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>RepeatCopy-v0</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(Discrete(2), Discrete(2), Discrete(5))</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>212</th>\n",
              "      <td>CarnivalNoFrameskip-v0</td>\n",
              "      <td>Box(0, 255, (214, 160, 3), uint8)</td>\n",
              "      <td>Discrete(6)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>475</th>\n",
              "      <td>MsPacmanDeterministic-v4</td>\n",
              "      <td>Box(0, 255, (210, 160, 3), uint8)</td>\n",
              "      <td>Discrete(9)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>575</th>\n",
              "      <td>Riverraid-ram-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>719</th>\n",
              "      <td>Venture-ram-v4</td>\n",
              "      <td>Box(0, 255, (128,), uint8)</td>\n",
              "      <td>Discrete(18)</td>\n",
              "      <td>(-inf, inf)</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-8158f165-bbcd-4529-bf11-32d64a006c4d')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-8158f165-bbcd-4529-bf11-32d64a006c4d button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-8158f165-bbcd-4529-bf11-32d64a006c4d');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 38
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:24.985530Z",
          "start_time": "2021-07-14T11:42:24.975543Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kDRZkGXjbP8l",
        "outputId": "82cb1ea2-3387-47ca-fcc0-1e7ea4622e77"
      },
      "source": [
        "env = gym.make('MountainCar-v0')\n",
        "print(f\"The Observation space is        {env.observation_space}\" )\n",
        "\n",
        "print(f\"Upper Bound for Env Observation {env.observation_space.high}\")\n",
        "print(f\"Lower Bound for Env Observation {env.observation_space.low}\")\n",
        "print(f\"Action Space                    {env.action_space}\")\n",
        "\n",
        "env.seed(0)\n",
        "obs = env.reset()\n",
        "print(f\"The initial observation is      {obs}\")\n",
        "# # Take a random actionget the new observation space\n",
        "new_obs, reward, done, info = env.step(env.action_space.sample())\n",
        "print(f\"The new observation is          {new_obs}\")\n",
        "env.close()"
      ],
      "execution_count": 39,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "The Observation space is        Box(-1.2000000476837158, 0.6000000238418579, (2,), float32)\n",
            "Upper Bound for Env Observation [0.6  0.07]\n",
            "Lower Bound for Env Observation [-1.2  -0.07]\n",
            "Action Space                    Discrete(3)\n",
            "The initial observation is      [-0.58912799  0.        ]\n",
            "The new observation is          [-5.88639679e-01  4.88309600e-04]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "A71VrTSAbP8m"
      },
      "source": [
        "# Working with Wrappers"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:24.994188Z",
          "start_time": "2021-07-14T11:42:24.988193Z"
        },
        "id": "jG4QAcwYbP8m"
      },
      "source": [
        "class ClippedRewards(gym.RewardWrapper):\n",
        "    def __init__(self, env):\n",
        "        gym.RewardWrapper.__init__(self, env)\n",
        "        self.reward_range = (-10,10)\n",
        "\n",
        "    def reward(self, reward):\n",
        "        \"\"\"Clip to {+10, 0, -10} by its sign.\"\"\"\n",
        "        return reward if reward >= -10 and reward <= 10 else 10 * np.sign(reward)"
      ],
      "execution_count": 40,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:25.004792Z",
          "start_time": "2021-07-14T11:42:24.997019Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VR7bwk1NbP8n",
        "outputId": "559d59ed-6c54-4136-b27f-be848c5def54"
      },
      "source": [
        "env = gym.make(\"CartPole-v0\")\n",
        "print(\"Original Rewards:\", env.reward_range)\n",
        "env.close()\n",
        "env = ClippedRewards(gym.make(\"CartPole-v0\"))\n",
        "print(f'Clipped reward range: {env.reward_range}')\n",
        "env.close()\n"
      ],
      "execution_count": 41,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Original Rewards: (-inf, inf)\n",
            "Clipped reward range: (-10, 10)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KsEhXLdcbP8n"
      },
      "source": [
        "# Working with Wrappers"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:25.017580Z",
          "start_time": "2021-07-14T11:42:25.008041Z"
        },
        "id": "7KOMfcEHbP8n"
      },
      "source": [
        "from collections import deque\n",
        "from gym import spaces\n",
        "import numpy as np\n",
        "\n",
        "class ConcatObservations(gym.Wrapper):\n",
        "    def __init__(self, env, n):\n",
        "        gym.Wrapper.__init__(self, env)\n",
        "        shape = env.observation_space.shape\n",
        "        self.n = n\n",
        "        self.frames = deque([], maxlen=n)\n",
        "        self.observation_space = \\\n",
        "            spaces.Box(low=0, high=255, shape=((n,) + shape), dtype=env.observation_space.dtype)\n",
        "    def reset(self):\n",
        "        obs = self.env.reset()\n",
        "        for _ in range(self.n):\n",
        "            self.frames.append(obs)\n",
        "        return self._get_obs()\n",
        "\n",
        "    def step(self, action):\n",
        "        obs, reward, done, info = self.env.step(action)\n",
        "        self.frames.append(obs)\n",
        "        return self._get_obs(), reward, done, info\n",
        "\n",
        "    def _get_obs(self):\n",
        "        return np.array(self.frames)"
      ],
      "execution_count": 42,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:25.228285Z",
          "start_time": "2021-07-14T11:42:25.020138Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "84b0LV_FbP8o",
        "outputId": "5b88efbb-0357-4079-c056-c5f88dc1f72c"
      },
      "source": [
        "env = gym.make(\"BreakoutNoFrameskip-v4\")\n",
        "print(f\"The original observation space is  {env.observation_space}\")\n",
        "env = ConcatObservations(env, 4)\n",
        "print(f\"The new observation space is  {env.observation_space}\")\n"
      ],
      "execution_count": 43,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "The original observation space is  Box(0, 255, (210, 160, 3), uint8)\n",
            "The new observation space is  Box(0, 255, (4, 210, 160, 3), uint8)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:25.254592Z",
          "start_time": "2021-07-14T11:42:25.235316Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "22djeoslbP8o",
        "outputId": "bbbe85e1-8775-4b3f-c595-536d505f70f0"
      },
      "source": [
        "env.reset()\n",
        "obs, _, _, _  = env.step(env.action_space.sample())\n",
        "print(f\"Observation after taking a random step is  {obs.shape}\")\n",
        "env.close()"
      ],
      "execution_count": 44,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Observation after taking a random step is  (4, 210, 160, 3)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wDLbT8pNbP8p"
      },
      "source": [
        "# Monitors for saving videos"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:26.103685Z",
          "start_time": "2021-07-14T11:42:25.258170Z"
        },
        "id": "Y5G8SuSqbP8p"
      },
      "source": [
        "import gym\n",
        "from gym.wrappers import Monitor\n",
        "#env = gym.make('CartPole-v0')\n",
        "env = Monitor(gym.make('CartPole-v0'), 'recording', force=True)\n",
        "state = env.reset()\n",
        "done = False\n",
        "\n",
        "while not done:\n",
        "    action = env.action_space.sample()\n",
        "    state_next, reward, done, info = env.step(action)\n",
        "    \n",
        "env.close()\n"
      ],
      "execution_count": 45,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:26.109621Z",
          "start_time": "2021-07-14T11:42:26.106506Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 289
        },
        "id": "yHSRRR3ibP8p",
        "outputId": "e801009d-763c-499f-c105-240d12417f61"
      },
      "source": [
        "# On Colab\n",
        "from IPython.display import HTML\n",
        "from base64 import b64encode\n",
        "mp4 = open('recording/openaigym.video.3.59.video000000.mp4','rb').read()\n",
        "data_url = \"data:video/mp4;base64,\" + b64encode(mp4).decode()\n",
        "HTML(\"\"\"\n",
        "<video width=400 controls>\n",
        "      <source src=\"%s\" type=\"video/mp4\">\n",
        "</video>\n",
        "\"\"\" % data_url)\n"
      ],
      "execution_count": 48,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "<video width=400 controls>\n",
              "      <source src=\"data:video/mp4;base64,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\" type=\"video/mp4\">\n",
              "</video>\n"
            ]
          },
          "metadata": {},
          "execution_count": 48
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8GXPpI_3bP8q"
      },
      "source": [
        "## Visualize Animation"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:26.606478Z",
          "start_time": "2021-07-14T11:42:26.120586Z"
        },
        "id": "55ZrWIhbbP8q"
      },
      "source": [
        "import gym\n",
        "import matplotlib.pyplot as plt\n",
        "import matplotlib.animation as animation\n",
        "\n",
        "env = gym.make('Pong-v0')\n",
        "obs = env.reset()\n",
        "frames = [] # array to store state space at each step \n",
        "for _ in range(300):\n",
        "    frames.append(env.render(mode='rgb_array')) \n",
        "    obs,reward,done, _ = env.step(env.action_space.sample()) \n",
        "    if done:\n",
        "        break\n"
      ],
      "execution_count": 49,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:32.499100Z",
          "start_time": "2021-07-14T11:42:26.608865Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 248
        },
        "id": "y_w23BQjbP8r",
        "outputId": "7c911fe6-1395-4bda-a172-30cc915b1f4e"
      },
      "source": [
        "patch = plt.imshow(frames[0])\n",
        "plt.axis('off')\n",
        "def animate(i):\n",
        "    patch.set_data(frames[i])\n",
        "anim = animation.FuncAnimation(plt.gcf(), animate, \\\n",
        "                               frames=len(frames), interval=100)\n",
        "#anim.save('random_agent.gif', writer='imagemagick')"
      ],
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAALQAAADnCAYAAAC313xrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAEeElEQVR4nO3dvYqcZRiA4ffL7ib+khhERaNgoUUUEdET0MYTsNMzsBIEG0sFW0/CQjwGsRM7MSKkEUQt/ImGKPnZ3RkLYQ2C48bM7OzcXlf3ZiZ8D8vNx8POx+w0n88HVJxY9wCwTIImRdCkCJoUQZOyvejFaZoW/grklVcfHw89fNdyJ4J/8f57F6Z/em1h0K+/eX7509yml595bJy7755Dv//363vjg08vrnCizXXjxjtjNn/uFv7HT+OOU6+tbJ5l+Lc79FHNcWjTmI7lXJtpGre2dR7/n7sdmhRBk7Jw5dgEn3/z0/ji258Pzg+fuXu8eP7cGifaXFtbH47trY8OzrPZs2N37601TnTrNj7o3f3ZuHpj7+B8fW9/jdNstmlcHdP0y03/cmVts/xXVg5SBE2KoEkRNCmCJkXQpAiaFEGTImhSBE3Kxn/0ffquk+PRs389H33/vXeucZrNNps/Mvb3Xzg4z+dPrnGa/2bjg37iwTPjiQfPrHuMhNnspTGbvbTuMW6LlYMUQZOycSvHtd298du13UO//+ZHS/mb6fIY8x8P//bp0gqHWY6NC/rjr75b9wgZJ3feW/cIS2flIGXhHXrmm0nZMAuD/uyH478zwc2sHKQImhRBkyJoUgRNiqBJETQpgiZF0KQs/KTw6bOnj2oOWIqFQd+zs3EP4/E/Z+UgRdCkCJoUQZMiaFIETYqgSRE0KYIm5VAfBf62++eXtdy9veXvbHOsHeoO/eWly+PCpctj39cacMxZOUgRNCmH2qG3pmlYNtgEhwr6+QfOrnoOWAorBymCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE3K9roHoG02e2rMx6mD84np6zFNv6zseoJmpXb33hjz+bmD8872u2Nr65OVXc/KQYqgSRE0KYImRdCkCJoUQZMiaFIETYqgSRE0KYImRdCkCJoUQZPieWhWamf77THGzsF5mn5c6fUEzUqdOPH90V7vSK8GKyZoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNyvaiFy/+euWo5oClWBj0pes3jmoOWAorBymCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE3KNJ/P1z0DLI07NCmCJkXQpAiaFEGTImhS/gB/VHH5UqCaTgAAAABJRU5ErkJggg==\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QG4E4XhibP8r"
      },
      "source": [
        "![](https://github.com/Educat8n/Reinforcement-Learning-for-Game-Playing-and-More/blob/main/images/random_agent.gif?raw=1)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2021-07-14T11:42:32.505699Z",
          "start_time": "2021-07-14T11:42:32.502509Z"
        },
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 310
        },
        "id": "MaF64vARbP8s",
        "outputId": "ff6e7891-9e57-46d7-ac96-053bd3e492db"
      },
      "source": [
        "# For Colab\n",
        "from IPython.display import HTML\n",
        "HTML(anim.to_html5_video())"
      ],
      "execution_count": 51,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "<video width=\"432\" height=\"288\" controls autoplay loop>\n",
              "  <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAABgNW1kYXQAAAKuBgX//6rcRem9\n",
              "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n",
              "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
              "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
              "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
              "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
              "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MyBsb29r\n",
              "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
              "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
              "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
              "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
              "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
              "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAAKQZYiE\n",
              "ABH//veIHzLLafk613IR560urR9Q7kZxXqS9/iAAAAMAFpyZQ/thx05aw0AAQoVYsnVGp1kAhy4n\n",
              "TzAtFEUYhOxmmJ8/kVhYzqV1s/hna3szaf1EQ88ldl19rH56fl7+77tBipWPlVq5bnJNKi78ewQh\n",
              "tK3IvKifn5qzMUYxOlLbwanBIyAjGVZUFJtWJgsF68S2PYKFn77iGdma5KbPtrTI33sl/aVkKc+5\n",
              "+jVRp93offmNMK8Hdijn1s3ogiBxllcipP/8aI8MhXeQtO43cFkLhW5FlnT55j5YC51/B6IiYELx\n",
              "Y+47UKpX2yP5YsL36Pb1b4U9y3YHe7yvrW+9TGBswdcIyeJc1Kvg550JNur5ROy6putrSfmjggua\n",
              "+YfbQyE5y/ZfeX+lOyGufAg8A9BjA8gBGGihXTEVkMi7zyFjtGtTsvkJMgFFykCVE6iDo5zJ9sW3\n",
              "pN288wMJizNdn9cZuW0Mrx40aBZ5/o1CVXcKi7bpbWWT4ooIBFICwRUVXVDmcFHY0nzpsBdvPYcg\n",
              "JLzMexbWEBSSAiPQaVOoz9gTT73cjeAJAjE3A4iyl91fjaA0joKqZT/a1gABZt0usObOZP6ue2ww\n",
              "AraSbA4P3DNkLjuML5OFpX7S0EKDPPCwwIz1RTEiOLM6OFFRR96vv8B5VCYLhyS5ge483b2pT4DG\n",
              "gKJxuvsPH9tp1bVrgxvQnSZJHQQ1bFepp9DlstJfZr1ScuXwuozXe0b2AK8ovk+TMtPpl7WDyTD2\n",
              "3x+OBYOtodIayctX0PLbrnbGqLJC2xaNRBxTvdyf/+3IXZz4fhlAdX/Rum5Ih++Ma163Q/FPCYuX\n",
              "zlcdsD68m0jvjwYI0yFqOKPAqQAIjE9M848AAALjQZoibEEf/rUqgBtLrCAPF7zCn5Sq+98De7oo\n",
              "B/9sRTvBZwjejQiugNIpiF1GaK4ycEJxStf9+EH0PUYhSW3ayi0p7/rNJ7p47OWvt4A+C5std33R\n",
              "P1oS6qI2Ch1Q1cyIsVZ5vvzbBnMb2kOyLTaANTB6WAi2LTbDaMopJu6m3tgCr6TQFATztTEd/8U9\n",
              "S1BXX741z9FZm7rLD5fxJ7FyYIewL40UyDANEqQFiFtOjP344ClBq1XNWcWxnw2ybIk9SPPUC+IB\n",
              "9bbyQfEAZcA+B0QSfjMAB45Nq5wsH/4c90r/Y/PO5UoSVrSqiZ1wM5bziue0y8WBr1cF4RAZfKu0\n",
              "+xtGTJqBt2vasS9bSeSwV93hPK0lMRQbAV8ZCKSFvsVVlHWnWSBEt1pc9B4xvxCmOMZxdjmV64KD\n",
              "0+70mN+ckDs8j7DF0nRC9alY6nZ015zkEgbH3oQLQ+iOrFeSrRpO5je86R1Z2y4As6TcLYDh2ur8\n",
              "pYt6+2PrfvgO9VbOdjwhDzqThcA7vmP5ca5CYEj4jinLliIsNwkGpI/p7M47BJ1r4Jv71BVPDr4D\n",
              "eaMO308lPMGokBaRqOU+Qx7PXu8Ki5NCmZbjDjeIHMSUSBUE3xnZwGKU/KulyKoxyeGvMoqj+90u\n",
              "T22/B75f7Egd1d3lKUn5I/8FJcEDqu3QOtq2dCvyamKCk1VgMtUBV6agAADKSoZjKh+vtZsCXzBH\n",
              "URKK4LEEzF3useuprpIUMRR6vuIfnTDHXavPo0RShzh4pdlA3e+nX7sRZofHCsyy+52nhKS2L+f2\n",
              "InkOxp+qT+90ikQ1C46q3y/HZjHY9LsxUhAS27xLSOcVIMVO/XhHaGWi1Q6bpcYQtrWTBbwNYL6m\n",
              "5+Il3jKwlna1w/GpdKfYwTZi/35H0GXTK+vLJRVeXVZrajK4yqGl+Ij3DYvenwvlNczWUXTyg7OL\n",
              "Px441RCRrF72qSJjKmdWuDnqFf5tPpJ+0yl/gAAAADABnkF5Df8Ai0XjtBABtKNxNP1YPgcnFe+u\n",
              "cu8H9adlWmGcGX+U/zq6mBlNSEijq80AAACvQZpGPCGTKYQR//61KoEL4+ZK7UscbACEeusdaz8f\n",
              "fwquWwDVwcB138d0uCqbBzz0KFfjPHFpu4Ys+Nfc7TWJCIQA0onGxgw6Q2Ng/XekiZcVIMmyM5NG\n",
              "iuXfdp+BYGymS7J5VSMWiwvf/zBxMjRiFap/gUwbiFQfNYJjYM9EgsX6nnqCLuga8ar+FZF0Psnn\n",
              "KyX4aGWujnITKI8AtvkclFDbDxcZs84GPIZc9vD5ZQAAADFBnmRqU8O/AOU6eDPDMmABOw4dbnWH\n",
              "l/MNgGquTTdCnFdfhNsvjNWVceNZoDqnAoFxAAAAJwGeg3RDfwDvCW/lFMACIAn8W2Iv6keXR4eR\n",
              "aYyQUGaKStoalnKqYQAAACMBnoVqQ38A7s8XzWggA2lHQt8LMh3k8mnsZ3wd+mosfCJ1IQAAAE9B\n",
              "mopJqEFomUwIIf/+qlUCF71KyXF5gaAD3451zqMhBfDq1kQnytKXj+xrqKd4tA+pqzSDp0tKE0SA\n",
              "1U09sF3sJjLHMgVZmwGCXwNt46evAAAAKEGeqEURLDv/AOU6eDPDMmABOw4dOrVOfkcOsUpqjcWr\n",
              "1gmFG7SatSAAAAAkAZ7HdEN/ASfZc33YV5MACIAh9VHsHN4qUiaMfofyV03JyjamAAAAHQGeyWpD\n",
              "fwEnejrWC1YggA2lEfC9A2U0bz6NzHxfAAAAPUGazEmoQWyZTBRMEP/+qlUCF71KyXF5gaAD3452\n",
              "AqsohKsOvjCDJEhQoDCn14QiCjOAJGwKMQNjtje+6YAAAAAfAZ7rakN/AUYulBjL1MACIA5gKj6C\n",
              "Q0D+7PrrJWvakAAAAC9Bmu5J4QpSZTBSwQ/+qlUCF71KyXF5gaAD3452Aqsqf/m580f+ikqO6LWB\n",
              "Xr7pgQAAACIBnw1qQ38BRfhzZRC9TAAiAOYCo+hXdqqnSDVkCNh4QNlBAAAAdEGbEknhDomUwIf/\n",
              "/qmWBx8K2vE/PySAEtalFFWwORTHzCC4NtKa7b/xpmgHJazA+0kkgQ60OwAVXtTWjVTlKLo2Ak88\n",
              "qmB3NC8et+C3EopfgC5D8RAj+Ck5tbCHiX71hDPzjs+mzoDvDm7+SxSv8A6GqiPhAAAAKUGfMEUV\n",
              "PDv/AOUb8OYQzJgATsOHVzrwCee7j+0ZuhdaKDS+wqjUMu42AAAAHQGfT3RDfwCFz3OABEAVmD1U\n",
              "/2rlxklRB+kK+b3YAAAAHwGfUWpDfwCFyWkhA1J3FqLY4yg+V4HZlGKkW8ROD4sAAABRQZtTSahB\n",
              "aJlMCH///qmWBx8K2vE/PySAEtalFFWwMYhtmB1GoNGOO10UE0zopjN9g1giTlX2j63F/1PaZ2Mr\n",
              "/7PB2CIHbqOkRnNsE4HsuHlgAAAAVEGbdEnhClJlMCCH//6qVQIXvUrJcXmBoAPfjnYCqrRCTOG9\n",
              "jfkN/p99segYGh6xvpaUmgn2BTKfNeioRRaMstMbKvI5hUXaYV2rjffPM9j/YNTIXAAAAENBm5VJ\n",
              "4Q6JlMCCH/6qVQIXvUrJcXmBoAPfjnYCqohAkal3hO+pFPm0kmDQg3d8mDsrjQmrG0r1QnAj/0Te\n",
              "1+7Pha8XAAAAWEGbt0nhDyZTBRE8EP/+qlUCF71KyXF5gaAD3452Aqpj7EyXmpd/HAEaWGdlC/Xp\n",
              "Fmxt9T6QrrLdJZWMJiDh9SkVRmDFt6HhmnhN+6PMiH0/uuJMccxv2MQAAAAoAZ/WakN/AUX4cTbd\n",
              "eo9an7z8AOLo/n0tgjS5vUzcSa9UYkf23H5LJwAAAE5Bm9hJ4Q8mUwIIf/6qVQIXvUrJcXmBoAPf\n",
              "jnYCqrRCT6CByCWfOZH0KzGupGDDggvDG8K2vxuf9DOghV2vejSx6eMdLcK6H/iZsv/r/eEAAABq\n",
              "QZv7SeEPJlMCCH/+qlUCF71KyXF5gaAD3452AqwUAjRqEGwt3Hxi4Fbo+Qt9o2JwkZEA75q2T+kn\n",
              "5fL/9Dg1jq2YHjV2pEyZn2MhdW6CpjheqZrE0claVQkXE/WMWRzeElc0qFasCHLB6QAAAFZBnhlF\n",
              "ETw3/wFF+HE23gUwAJ2DmAqPn1P9/7yvx8W7Ri0JuG6wIvG6DFvgaDLGbXf//sm4icC7wdtgEmkT\n",
              "/weVVxhjSsFQR9l+54eiOk2W9UGcCN7rjwAAAFkBnjpqQ38AhclpIQNcgyA9aua5TV/1q3ZssztR\n",
              "VX9rQAjxf4VO1HACMrkuOi3D/3PdD5w1AoCrUZ6mtIOrJeX2N/XXTt/X2TN0gk4MZZG8+dS7RCyN\n",
              "Yma5cAAAAENBmjxJqEFomUwII//+tSqBC+PmSu1LHGwAhHrrJQkxgqLD4mMQEGwV+6keqjY2YpQL\n",
              "F8BNdQhfHhHH3fHXq+Ullef3AAAAekGaXknhClJlMFESwR/+tSqBC+PmSu1LXLIAS1tsg//IqKvn\n",
              "zfnd/iVHc2hcCYhip/i/RC4SuMuLvSl9YZozJvm8fJXlGu6b8V1PXGs/rclExEj55VvayMaTosRz\n",
              "I4mtfzoEs3xBd2ayBP55D2xFEmebp9EitNnNn7JRAAAALgGefWpDfwFF+HE23XqPWqvn7HrThXp2\n",
              "VVSWGsgx0WAqPcDVju8v61brJuknjMAAAABfQZpiSeEOiZTAgj/+tSqBC+PmSu1LHGwAhHrrJQmE\n",
              "F/t143uzJnCjTEkvNCBDJ91CiJvn2BwqwGf5d2oZ/8adqpWL5R/XxdVV3Id0zUXSpNChUIWhaC5t\n",
              "aykzxFRqisAAAABTQZ6ARRU8O/8A5Rvw5hDMmABOw4dXT4BPMYnZePR55yD85f5BHdlmzHPcpyJj\n",
              "dEmO9GezKXximymGifjgDtUleL01SyW74NpUZ+qqYCzA3i3kCC8AAAAtAZ6/dEN/AIXJaSEDh/7V\n",
              "y38c9v/CsdLkU/I8Wh/iP8cFIX3XCjb3jBg0CUlAAAAAMAGeoWpDfwCFyWkhA1yCcXqIVIY05jQw\n",
              "suP0QTEwNHD4sXnxJmwVu9YsADL6H+ScqQAAAINBmqVJqEFomUwII//+tSqBC+PmSu1LHGwAhHrr\n",
              "JQkJFvQUzqaJfxE4ClpApZe/wwCmpmXfZ0Ug4EH1FuqX6YPgdhy+I/suA5MFaJmLJwtlSDdFoKB0\n",
              "zgch7Ifcs2LkMVHzfvH75FDec5mmMXOHXKIqMEfuTOBCKIOhrG2M7HDjE5UbIAAAADxBnsNFESw3\n",
              "/wFGLpQYy9TAAnYOYCo+jMmBd+i/F2CqbCsfwRKwS9T7NRSTDJsPL9tXP4sg9eHwUTCkrMEAAABD\n",
              "AZ7kakN/AIXJaSEDXICdB9YdsNrqGtLu+SP8Ryzz/Mg9W3ghJisPQABxvPkO0FplY8x0x2dEYDzg\n",
              "Fg0l6/eNDEwswQAAAGlBmulJqEFsmUwIIf/+qlUCF71KyXF5gaAD3452AqsohKsiX6kX5z4xFf1K\n",
              "cpe6R4UdAIogrnhs0ECD4ZF7Vd/21LjAVhLp/hreB7WQvrH9ebPmPTFLJWrsdea9Onon5gXUBARf\n",
              "6p1y90EAAABCQZ8HRRUsO/8A5Tp4M8MyYAE7Dh1c94BrX446uoDJcdt09SzIXyVAWV+KSPa/+jAN\n",
              "zEeKcB1eixMtKm5V6yzfoe59AAAAKQGfJnRDfwCFyWkhA1yCqB8Ef16fIGJucutnKjWjdeQwc3U+\n",
              "tIlGLOWAAAAALQGfKGpDfwCFyWkhA1JXFnTyFadA+BpbliFxfYK6qy2nUMhw8etcLYYfDH8ZgAAA\n",
              "AG9BmyxJqEFsmUwIIf/+qlUCF71KyXF5gaAD3452Aqsqf/m58093mctvZKf0jH6maLHfZ5/MqwN2\n",
              "VyGqxVLWQTguasOz+6nG4gxAvLCtCbyfG+xY6cmdypkoh4JoE5gedBPBoLktdzYpE644oKv60YEA\n",
              "AABAQZ9KRRUsN/8BRi6UGMvUwAJ2DmAqPoJDQP3IixNBwSKIUEulWemG/24aCGYDkw4vNYcvAYqj\n",
              "uw+XrMH/STI5BAAAACsBn2tqQ38AhclpIQNcgJ0H4HvbVP+QXEoCNEfTOdujq55xfw7O8Q7zQDkE\n",
              "AAAAn0GbbkmoQWyZTBRMP//+qZYHHwra8T8/JIAS1qUUVa6dnLQBRg/x5grPqH8Ieg2CCOzqHKwM\n",
              "uDAECIF6sqL8sHHFoqAsXDia6jFzcEGcIthJ4k9ygaVCmrQYvuxGQJlQj+69YUf2grpglyo+wQu6\n",
              "wlnwUK+38+1V0URNuOkTrPg3Hs19IVaHHtA9KRP7loA0Hcm8fVp2jei10Xbo2WuawQAAAFQBn41q\n",
              "Q38BRi6UGMknUQCE4rXNsCkjVoliqRvMy5KEx7wAbijM6KhyXOdHTmS17+JHQFAO8UOWo7P4sf98\n",
              "c+BjSx0hmskEaGEGlLUjQUV/TPmo2UkAAABVQZuPSeEKUmUwIf/+qZYHHwra8T8/JIAS1qUUVa6e\n",
              "YTAEi/+oHnAprbGdl5Ghygp2sqLlh4dCFAgBUQkZzXryOumy/5illzBodqdsk/tevUSioNPRGQAA\n",
              "AFxBm7BJ4Q6JlMCH//6plgcfCtrxPz8kgBLWpRRVsNtv/IGylTk99tZXJgmbCn1orzpQqgimdW/u\n",
              "iqyPy9W2Ro5HfnmyAQgoWtNP93ZX2ZUoIaUX35mrs0Pw76NvpAAAAD9Bm9FJ4Q8mUwIf//6plgcf\n",
              "CtrxPz8kgBLWpRRVsTt01qHd5gHWUzmHyLunGMI81XPZp+iYJ3cxZEeFaFHWgiwAAABqQZvySeEP\n",
              "JlMCCH/+qlUCF71KyXF5gaAD3452AqtHTaN9RIGUdAoE12Pv5FVS22CYqByASjlf/fZue+Nn/BOv\n",
              "+1nve5R85xgnzQvrWvz2hgVVpCvHboyQfwjvU7yhdg1R5v/drIDsclix/wAAAE1BmhNJ4Q8mUwII\n",
              "f/6qVQIXvUrJcXmBoAPfjnYCsvqurWeokC7U4d2W0nIG1gIJGYUVl1OCHI0Kr/2L5jWbRVymUEFc\n",
              "w1BsyO881WMPgAAAALNBmjVJ4Q8mUwURPBD//qpVAhe9SslxeYGgA9+OdgKzOq6tZfo7r+8OEp9b\n",
              "LwOlvwPg822Jg8i00fNDz04owg7RWemPd2MGp1+13ezRAI4qZ1tOyAInNtYUnDIxcGZMCD02x0fd\n",
              "S8KQio+02xbMwyBLBxaWZHiYAsBb/YxVk/1mtnoDfHo68A1KWSQKlsJPmapAxx818Wqln0767/T1\n",
              "KLEZo16+5vm2EDZx6nsracF6kbY1FgAAAD0BnlRqQ38BRfhxNt16j1qlpF3YnP/Gba2YcLgCyp4M\n",
              "KK0e0zJ4gAATWYYMJDeEwk5nwXwyAoK5Q6XEx8OPAAAAtkGaVknhDyZTAgh//qpVAhe9SslxeYGg\n",
              "A9+OdgKx29wmmzmZzy8ykBg0Oh5nE7dVecbO6+hOGL4fkAQ6CXYuw5TPwU5YYDqca6KfYh6dwz/E\n",
              "BqoUbLcKlqTVJUxmX8DK15qIwS/WzIQV0cw5layz+L80qiwfoW/OWr9vAt1/4Iq8N9FK8F58lMdl\n",
              "2j+/OXo/A2DXQvCZ3GL5bm3DvOTk2hwBPsurxD+fJpOMswMDEMNXp4dKl0ImAAAAc0GaeEnhDyZT\n",
              "BRE8EP/+qlUCF71KyXF5gaAD3452ArMKPcQvc8xok5buc0rhbsZZPlqH/nABBxo+v7UcWlc+Gwzx\n",
              "394WrSNVAJtkjAScnFRulTWyzHVA7GhguKr6rf+sA/mT6qZ0Mtz/o37IguVCywEdj1EAAAA+AZ6X\n",
              "akN/AUX4cTbdeo9arUhGs9wRoAcXonJm3L7cfhatEbAFrYyFbxVgMpJ8KYhFyY+6k50von5bRbc4\n",
              "WUEAAABxQZqaSeEPJlMFPBH//rUqgQvj5krtSxxsAIR66yUKcEP/zcdYeF00i8JMq8/gwkUQn1TM\n",
              "7dmHPWCrDgi2VXKlecMXSfXzwxjCipC8gVWhrlTbw3cmj7QoCiCwav4oiWHlKHTFMkYFQyA25ne3\n",
              "8450tysAAAAoAZ65akN/AUY1Ya09eo9au+EvuykVN/iedJfE87J6dcL2Ie/J1eEtoQAAAJ9Bmr5J\n",
              "4Q8mUwIIf/6qVQIXvUrJcXmBoAPfjnYCsgcm54RVmSc302o9Lj9B7/SxFHyVAOZfywM7zFH/DYfT\n",
              "PQNo3DErcS74qZ7Aes/rl2lqY2uClPgDoaBf900KSCCt5Ncvb4Mw38+P1OiqWlaYVhp/2Y3ZxrMK\n",
              "HUGY0dSC6IoNh5ReXIy0e3GCim5ON9xii1vIJ5KHIKT6rijIzd3MuiwAAACUQZ7cRRE8O/8A5Rvw\n",
              "5hDMmABOw4dXcWNHsN2P6twC5PQ+ydabrv7uGdLOJWpObmb/UDAJ/Yo+Omi21IE/0AXwm0u/qvvD\n",
              "q9ZFZDROSArUTd2260BpXd88JGRUQfmTTx1AFxv/SzEK+PEv7PyLOUw4l0Um2HWlvCoektiCb4i3\n",
              "m8T1FERy9ommxq8lvdXghmRmzMCTgQAAADgBnvt0Q38AhclpIQPb56WqtBQAhOtQ7FtoK+kNac/y\n",
              "z2MqvKMCtApIgn0FUTAkICuhGeCU/uCFgQAAAFwBnv1qQ38AhclpIQPbijCb0xcgBDcb95Kwh7UT\n",
              "uNPAG13z8dnUnk4G1ypSg0WhCyYAkV2yjdmqdJWqczKL4XEGnioIMVzIKxZebYyp7bl0KDWjV497\n",
              "ICiRsAD5gAAAAJpBmuBJqEFomUwU8EP//qpVAhe9SslxeYGgA9+OdgKuvcq+7E6WnGCILnv4LMsS\n",
              "ZYk9ffsZOq1JU7S8vHIyzb9lQ/Q7uDQmYTRsP7yy1g8Qk1fS+5vYCXKBbcAWkuLdBQMfGgmFrhfm\n",
              "TbgSZczxc2w3pZRob10Gq78+Qcg8kXq1JCVF7yGa0MsT16Gf/IlzNyjbl05X8CTDbRuAAAAAVwGf\n",
              "H2pDfwFGLpQYySdRAM4j3QIBFv0pIy24bDADdX/dnfZcUfOtxCCEKHBTJovZsCrg0EBXWvpMJ3kP\n",
              "1DsJvl7NplF2lCr0ciUjC6a/AINyEMf/N7IggQAAAHpBmwRJ4QpSZTAh//6plgcfCtrxPz8kgBLW\n",
              "pRRV1j/7Jd3wOW41tU7s7y8+ePikgNauko0cbxvFU3QRw8WEYh+6LXAp3To35Ht8nV1PbV8zQuDO\n",
              "E98wP6aGvCF2olk9tlTZleru0kJtHK34j3ioSVxRAh+NGKE8Q2CRwAAAAElBnyJFNEw7/wDlJoVL\n",
              "vOoIAP4xVV1SY3aE8x9MdOVfI2nWdesDu2bjC4mTYw0LXoSv9QJgyRj3FCnqKOQ9rpE/mu/ECk+p\n",
              "qGXBAAAARQGfQXRDfwCFyWkhA5VlmkxbjAXJ/oB8JweZAAtpAqJJz5SP+KkLxYy7zxo2AC9QPgWM\n",
              "WH7FLTbFjJcPKUvK6oWvKtm6uAAAAF0Bn0NqQ38AhclpIQNxtMZOVWO3Ya/78HADgxmcfjUHrYei\n",
              "mqDqpvO5QLmyD+fr1F9Dr+oXMCnP07yPJYNiEKm1Hwdkwc8OpLlz3G7Hg2JH2sPxITxx8UzOxLda\n",
              "kfEAAAAtQZtFSahBaJlMCCH//qpVAhe9SslxeYGgA9+OdgKrX2JXKcpFZwsxcmFdxPmBAAAAZUGb\n",
              "ZknhClJlMCCH//6qVQIXvUrJcXmBoAPfjnYCq2H/9XwMNkU14xCcfOSoB1OTeS+BXss/M42PwCJ8\n",
              "5kw2r0Thrwk7awJ/g2OnImHtB1LCAQnP/YxwdfgEpKB9UMlM8rKogk+NAAAAW0GbiEnhDomUwU0T\n",
              "BD/+qlUCF71KyXF5gaAD3452B0XcukkKMYReX/22HcNUmyyfpzCjnlzi0e/nfpJaZIsXwd6+h1rf\n",
              "FB9VZRF18Iod7wbd800iczSToTW6F/sAAABHAZ+nakN/AUX4cTbdeo9aokGhvLnbciqZsvoUBLDj\n",
              "yls114QA4rYj/RlGxJrbiUds3lh/K8Z42XE+iVluTjduTP8N2ZqgmTAAAACyQZurSeEPJlMCCH/+\n",
              "qlUCF71KyXF5gaAD3452AqqH2KFbPqhg4D48wVdVMWHsaS/mkpF/BtMK6oXhXU1oWmSdg6ej9bPS\n",
              "YDW6oSkf4g/EqlraEOCNc/8vC99h5Sw3pB8f1mmp0DJjfT8x6i8BD6R9MJgz38qMTTBBffWsmlzq\n",
              "SPtBe6/uFI3cz46X8SQA7o/7Av1nde2Mb6NRPVkOTPbqWWT1aRBo2Uh5zi4i+byiV5w0IAAAAHRB\n",
              "n8lFETw3/wFGNWGtPgUwAJ2DmAqE4ugbNhxVlowu+YieLTX/Srkk7iRicmjzldvLGKSBx5PtiDmK\n",
              "iqET9SdDo34gUWSJqr+B4AxdKtX54M8S0WqDuUpQMKpPYNEefknktGlHjnVqawCkq8Hsy21D9zaR\n",
              "MQAAAFYBn+pqQ38AhclpIQNSduJ4TqP/rkuqzx/9S272jAAtg+Zys7L8cgC9BUQ5fPcRUmJTcMaN\n",
              "88jW+pO5p405+ng4NKyNzv073EJ5z+mbfQQSmbl28gXsOAAAAGpBm+1JqEFomUwU8EP//qpVAhe9\n",
              "SslxeYGgA9+OdgK6tV1aJ/hB7R4DZAgFDFpuhjKShTE44mOve7mikEziq6Z7V5OabVc/1r+GaxCa\n",
              "q9WkSwU1enAZpEBtxnz2jhQ4qCSL4iQ/gyMpdFlAAAAASQGeDGpDfwFGLpQYySdRAIThoPnoAl3G\n",
              "xHD4zoz/An/8Z2XixO/1uAFhcJRYhxJjvC6xk78HOfe/W81w4ihQP7/P90ZzaWeQ1sEAAABnQZoO\n",
              "SeEKUmUwIIf//qpVAhe9SslxeYGgA9+OdgdF26RBh8sIRRnoFJWjAfYSdmokr6LBEZ1cduzS+j9V\n",
              "Pe9gkBWnI5X0E3J58ReqVny89Yj4I8YoM5M642e14rAD5nZyjNBtcieOuwAAAFZBmi9J4Q6JlMCC\n",
              "P/61KoEL4+ZK7UscbACEeuslCOZMP8wWdbCFD/f1rBylfRbK63Tl53yiREvrk3eNeV9zFTfbO7lh\n",
              "MLuzZQT9CTZTCfLWzKPU7/G15wAAAGdBmlNJ4Q8mUwIIf/6qVQIXvUrJcXmBoAPfjnXohgUD9J+h\n",
              "kXBDRG7+/fBRamkviek+sww6lzpr0G2E1W2ZhudIqNnZ6XCFABNoaZhFZPLN3vJHRpVxUwEpHYG1\n",
              "bXVV2UYBQ9ndQS0UAAAAVUGecUURPDv/AOUb8OYQzJgATsOHT+ZwBF5Mb5Eih2DhGRen2pWVapZn\n",
              "YUiJiy5hMPM+xzJCPdcQGv/4Qy6AS/VvfqLVvWR4KlC3YBkXVsBMxmBbruAAAAAzAZ6QdEN/ASfZ\n",
              "BFKkfo3cIjmy5t96Brk+tmF2FIfmjjiAeL87YAbGvNaOIx6XYf8lngthAAAAKAGekmpDfwEnecxi\n",
              "BHOQxo4Di3GGgGDdeoMJAHoJfbQPO59ckGz6pqQAAABZQZqVSahBaJlMFPBD//6qVQIXvUrJcXmB\n",
              "oAPfjnYCqmP024GBmp3I5hQnxxhJZPsJver5zPFF5G15sI9WqxsZ0EC/D/z9vjC1bx85BkHvomlH\n",
              "IxN7f86DskAAAAArAZ60akN/AUYulBjJJ1EAkI1Omks76x2CmlUNbuOIsijaVajZFQ/ylhU+0wAA\n",
              "AERBmrZJ4QpSZTAgh//+qlUCF71KyXF5gaAD3452Aqpj7Ex4OUn09n//uI+SL+TWJ+3d7ARr4ptp\n",
              "mIBRUggp1CQjqNpz6AAAADdBmtlJ4Q6JlMCCH/6qVQIXvUrJcXmBoAPfihifAMYjsiINcqclzgmx\n",
              "H+C3u/oF4KTvcLvwevXNAAAALUGe90URPDf/AUYMQ6EaTeoYzSEXOUFwFkYAv3Kd9XP6UhyCPqfR\n",
              "rjprPWOmQQAAACABnxhqQ38Ah1egIta7M3s26DFbFos1yW3TJXgQDJ1SHwAAADNBmxpJqEFomUwI\n",
              "If/+qlUCF71L3VMDCBACVgkiH8bxYY2E0Ylv2Lzj+ti+/YGJ55gzEzkAAACHQZs9SeEKUmUwIIf/\n",
              "/qpVAAGKsYhFhA+qnLT4ZSV0e9En8RU6ZAEfFAWX8IO9SIj+IYGN9Z52udujbwdBquw/yWZECNRt\n",
              "fTCt6U33G1KNrCjdI5JqTAh+uKvbZc0u+UcLZCivzjfc9ey1bzkz8bpcllBs6+MFJZWn64UbHVKN\n",
              "k4ZCK3ZKyPXcAAAAL0GfW0U0TDf/AAQ2vfNcF+/0Tq5Iso7pvTXWz6wJq6MkNPjmc0psGtwETRgB\n",
              "CYGXAAAAJQGffGpDfwAENr3zMt4oWe9y257WOWjNNaTph5zNT8CFoUDdGVkAAAAlQZtgSahBaJlM\n",
              "CCH//qpVAAMVYwzciB9IbWncKNjbBYiFWG4xnAAAACpBn55FESw3/wAIbXr53lNQuh0L1w1jXcuu\n",
              "aSlatJXM2Ij86HL3rFgkymAAAAAjAZ+/akN/AAhteva3eAk9IzMX5LSPDRkeGkcheeNUGgmuWLMA\n",
              "AAAwQZuhSahBbJlMCCH//qpVAAMVYtxjIWuOpjaU24RVUqLgBEAA3RpHTjeA4/DX5FZCAAAAS0Gb\n",
              "w0nhClJlMFFSwR/+tSqAAxejY7VDTPhxa8mXkzNchoAHMf7RtDbOMWf+wYaQ6R1hLgR2CKrImFEv\n",
              "ibBZo7eW+LD/5Ai3rXmKmQAAACMBn+JqQ38AENnNaKeVknArr94AuW9Of4SHsvgDLsigWqzZ4AAA\n",
              "AGpBm+dJ4Q6JlMCCH/6qVQAGM96maar3qjx8ASUOA6kFcqskbr2W6vTgnFJQVEbJHT4MKpec5mBy\n",
              "tadt0IuHCxRm+/kJZYT+hsRgwuH9ZrI+qjO7DsDEvqOdV89S5ZeYHgjRTBsupxBSedGBAAAATkGe\n",
              "BUUVPDv/ABgcNQAQ2lzK8YnqX+WgbofdzXm6H58v6sDSJ0BOErS2AWSP/GY7M0wPk0KFu6n4QVt0\n",
              "IqcLrvsvtSHDTTWQUgljT1hraQAAACMBniR0Q38AIbeP3f9DrGwlk+mNkXJnZGeqhGIG7BZXSnDi\n",
              "FwAAADEBniZqQ38AIbGcJ7lLY+zBu00c+iTKJDQAtX8eWckrRFqB5iXALWi5LR9YWxsVeHVVAAAA\n",
              "QUGaKEmoQWiZTAgj//61KoAAMVM8kWAQs2geBjy7YGUh5q2Lx0/J0MXc3/lpgR259UihKMCDTMZH\n",
              "0iKt4cWyoVpgAAAAcUGaS0nhClJlMCCP//61KoAAoJP0gBuA6J48tjVf8L92HYWeyhisMK8CiZT5\n",
              "JKeZUnkM/rVcT/nZiL256q1aDSdvnwJta6F1wOn/TRfqCpJc9P/+HLsXS6djeZeX2Hcn6f7yGarw\n",
              "8TDOMD1Dat2Pn7XAAAAAL0GeaUU0TDf/AAOgfRAsl0oOa86GH6dsWSZVAjpg31ZVDuvKa5bL+ead\n",
              "g+e1kGXhAAAAKwGeimpDfwADoFGn82cxP/JDuwANDl94o/PwOnzN4cldeYDiC8lyUz2kXVQAAABJ\n",
              "QZqPSahBaJlMCCH//qpVAAFBgzS69vKiCdhD2/gb+ug/0R5jeAEcqaY+ciAVrnDKqbkslCIpxYB6\n",
              "I84mdcXIp+LcqDoBMBAqlAAAAFlBnq1FESw7/wAClOGaGRyRZGevnZn+5OhKvktetklZrCj9wj40\n",
              "S3S9ZiE/w4ANvkRUGyuDPJPR8uNbwScG/SlPOc+QP08OPlDuthuBzrUlqAfEPNQ+jzbzgQAAAC8B\n",
              "nsx0Q38AA5+oJzpnz43FigFQXByBNZpyAIP9kxxZg6LCoPnA2I7mPaAerckpYQAAAEgBns5qQ38A\n",
              "A6BRp7BxusCA0vvXKEYYzc1JZo7CK8Pjw6Zvp4AFsHkZpzosQMFx5J77JdKPIHZefGshZwD4Stn2\n",
              "n1xm0Z424eEAAAA6QZrQSahBbJlMCCH//qpVAAFBG50vLZvaUhmmLSXvlIBGXvSA355uCsAD9lpG\n",
              "mSj42j+5A3UDbgcWcwAAAF1BmvJJ4QpSZTBRUsEP/qpVAAFC+L16sHlK5NroKBkaCjdHU8wNcmfS\n",
              "k4k+FgP0Xta2T/RKAc1KyT3aQeSb4Y7xQ4r4wsbOsyKE5o7Y6SNEZIgzSqMdHyppWPGoWUAAAAAs\n",
              "AZ8RakN/AAN0AKJVXF8d4WyzuCbHPIlq4JKggzB6Dy16e6algD7/fhub6YEAAADOQZsVSeEOiZTA\n",
              "gh/+qlUACc8rJwEJBqrWK6CXOBo54vlXp0kVq/3QeZFxEHhNPnq/gPZIP9G42xPQLmfmyDIeqS/e\n",
              "WsBVuXhVDqCMaKckGAmZzc+DWjKwE9fSM+AN/NuxsblxsiCrsx+XrqYpleDQPwx5hckaGjwo59lV\n",
              "UOc00ZrjCKTTrWtjEDx1LudLkLqu1jWBL1QW1oHqDo6o3OFyKyC1iE6p5KndE0+PI9fHkuvzMVci\n",
              "3XxW27XS3/VaDfhymHoHSFvC+K9MrbOVta4AAABcQZ8zRRU8N/8ADdF0mP0abAFBiXeaudDc/nWO\n",
              "abWDCQbsCc2z+qjWpeiBIa1UjFGG+M9lRJtpMkS+xwswA5AD+TjIrS95UaiKDCuA9A9tj7qB8C+D\n",
              "TBDgsJPu2uAAAAAtAZ9UakN/AA3LBE8MULuNpI0cHdKVPjRFEamZ7rYAcHjU+/94azE9BD9rP3zB\n",
              "AAAAbEGbVkmoQWiZTAgj//61KoAFC4cP/SqTkABsfI1otHJpDlrl1DsbqjMuDBGE754d+KD5YyBF\n",
              "LYMH2tK6COx06JXycANKHiL/Y3PzC2cRKf2YYme7UN9yqzpUbdxqmvY43NdQrVji30SZUlkIsAAA\n",
              "ACxBm3lJ4QpSZTAgj//+tSqAAAMZFFxcu33xOz1cZuACGtf8lgqpIWf3oDjFJwAAADtBn5dFNEw3\n",
              "/wAbmUurqEAE7Z+fmQE91LzlinPoKn6Sjhphg90VAqtkpcwQVc6f5vhTLlqz0M9rKLEowQAAACQB\n",
              "n7hqQ38AG1Crb5IANqd20S6CtB8aVMGorKruxHLKjUJ+rzwAAACUQZu9SahBaJlMCCP//rUqgBlH\n",
              "Oj4tqQXk92CbdDY0kMY60K1Yf4jimkskXa7bHzyYqrpiULGGjRNQRFkTikvbcAWyzs7lKD25v28J\n",
              "EtB6Dn6ItxI8oOdXRPzw6yX2bxP0H/4oUDfjkN8g91vtQFUJRw/NmvFr5zy1fBm7Ee8ow+Gh97Ia\n",
              "6s08dF8iwkFB2WaDn647YQAAAI5Bn9tFESw7/wAThyTbWQ/gg8pgAtDPdEjk+oHO3IOYt9Yuuopi\n",
              "XWAigDIYH7Us0J/rDqhdM5OAwB96ywmQJqkqFve/CfhVChJN9qg8HoyIB1LfXWLxWHEdM8FEmTI5\n",
              "6pMN2U+aL600wReTyjpD3SYFTt4P5d8RM1jmXZZwC0L26HRLXsPk6mc1wTl7c0nAAAAAJgGf+nRD\n",
              "fwAbpCZsW9s40bYBJ7JDm5KvIOfX2fwpQJOzyI3xOCFxAAAANgGf/GpDfwAN0AKJT2yxvk0pbCch\n",
              "NlHGVkMfpSH30/oJIMu0HbRXfim1kAB/t2V4emicsUz8cQAAAMpBm+FJqEFsmUwIIf/+qlUAMRe4\n",
              "nKJyCOLgAaFAj+HmuW85qt5e/WEeuPUYWPCE7H0xQdrYt5Zfe0xpdUewu1CGDUY3H+Rsfscb0SH8\n",
              "P1h09dnQtNEoF3qVq5ydw5luNjA/C0OYohFohGPXobxrxbIO6R5iFUKSRbRvT9pwfuPDeEezUj5S\n",
              "YT1hgCeXF0ltPwK/UxUP96LuBKgdg4n5axo0aRCY6XIlv7HLZYcgAPxRrrGV9Wns7E3kPKKrE7Rf\n",
              "0uJBlspQgBhlpyf2AAAAMkGeH0UVLDv/AFuMZ9BCrgh3vorixzv0+ZuGR6adSPmQp4+hN5u483/K\n",
              "8Us9fG4EYM4kAAAAfQGePnRDfwB/Xj9GU0F1uVLB5l8EIwXAEPUnj+Qz6L4nBReJ5j8njCpLyqkg\n",
              "DyC2STrOfsIZdMS8meFixPRUF35xYLa7jxoyt1MDETGCYMq0yjFffPzlS3d91xHzK7AvWIcsQNo/\n",
              "LP6jZoy4lE0/JodHC94WWfOvznDWPfCdAAAAIgGeIGpDfwADoFENK9A2VS82OdgKigWlRtu2F/25\n",
              "ydgMSW0AAABKQZoiSahBbJlMCCH//qpVADCw8mANwT9XxmEWprB6DaB4D2G4XoqFC/aSjiKOUBb2\n",
              "BpM7QsodMpZJ8xvQfdbrwbcXp/srhEVkh5kAAAB4QZpFSeEKUmUwIIf//qpVABdu+qADKL/DT8X8\n",
              "+X6L+jdisxgthnTIYRhw4AeBzoMhT0NrY57PX7O5FTRz8wv+I+SmZb7/6X1eVjnBuxO94XhnisUX\n",
              "nRGodg3C266YvLchE4vn/NWFw0nLhjPmvDkBaFNdXViMnzv4AAAAK0GeY0U0TDf/AAOgfPQkQHvx\n",
              "V6eyCXjub58B2+ll8RAQ50efujcM3Vyj9H0AAAAnAZ6EakN/AAOgUQ0r0DZU0xFK/8Jmt4POHXcJ\n",
              "509lBHV/cgeZ44s/AAAAK0Gah0moQWiZTBTwQ//+qlUAABi2+vVsHwuETTGbkH75ca6+r6i59HB3\n",
              "b38AAAAwAZ6makN/AAOgpVZLSSBkGhT3uAXP87jAKRwepcZpJgW1AYtAEav2tMU913B0UmeBAAAA\n",
              "UEGaqknhClJlMCH//qmWAAGAmmqChUMDB4wcuKDv9L884BpnPI70j2CzPtTRGBpxraklzAvIPRRZ\n",
              "19zAiV+oF9Zm4EUH8jJAvLJAAK+dk3dIAAAAKkGeyEU0TDf/AAOgfPQzWkZU3ZX+gkczX0ocT2Du\n",
              "ox1UExREdl7LBQ65IAAAACABnulqQ38AA6BRDXPM52QdZp8MVOXhjc0OClRWmgxesQAAACRBmutJ\n",
              "qEFomUwIIf/+qlUAAGMWb/ASErBLci02f+uVIQ5hzoAAAABAQZsMSeEKUmUwIIf//qpVAABirE+l\n",
              "FOdDiL7ywy6/kueR3oAfFH3eAR6u6bwr2DyqZ0l08qnqXieKfrRaeTuAHQAAACRBmy1J4Q6JlMCC\n",
              "P/61KoAAYrmKnjP4ZEWj9re/dFxN0hDv68EAAAA5QZtQSeEPJlMCCH/+qlUAAYzaX8I5viAK1Vmk\n",
              "2p/93J1FWKign4BtLmR5Jh9GDQnVPDO7DRQtw8AhAAAALEGfbkURPDf/AAQ2vXzv+iPTAwgl9thD\n",
              "fppXtAQskAGx0m7XrNUzTwvzlF9hAAAAGgGfj2pDfwAENr187QaPPjTNIi7zhyVc7JaEAAAAYUGb\n",
              "k0moQWiZTAgh//6qVQABjPepmmtzztNvAFPxu71dh7B/MoHOT+HgARWLos+VPNU3Txx8e3vXGSX0\n",
              "8R0cV0IiC7p9wDxfCsyk+BcAiSASgK+HxAq3qCkIrwubkvCtElwAAAAeQZ+xRREsN/8ABDcubAB8\n",
              "rqNmz6vewkaB9cJu1o8ZAAAAJwGf0mpDfwAENjOE9JYTxDA4cp5gAKnJLw/DYE3yVa+d6qTLVrZE\n",
              "+AAAAENBm9VJqEFsmUwUTBD//qpVAABiohtt0wKjgG87FAeY72b37weNzGz7v8YRzlIlLgCiyZHJ\n",
              "HbaXkXZqUnbMTYQ/u0I8AAAAHgGf9GpDfwABDZw5uD6XGJdS5xjrfJigevI1ZrKkbwAAACxBm/ZJ\n",
              "4QpSZTAgh//+qlUAAGM/q4A1T4zraSmW9IPK72gpRkMHZXDC2Sw3SAAAAFBBmhlJ4Q6JlMCCH/6q\n",
              "VQAAMVYuYGgAJgjaGrXv2eezai5k5Nf/x8DC96weuMkvp4kCNsGbcLaiRuau3WJu8grE043HSC2p\n",
              "Ma1kNi28zpOfQQAAACZBnjdFETw3/wABBbvFbc5BsbD+98zDaVCO0TWTWaRtEf5YajkMkwAAACYB\n",
              "nlhqQ38AAQWvgqy794+kuHiqkEAP0g1OXQMMIUUBJn25PIAPYAAAAGRBmltJqEFomUwU8EP//qpV\n",
              "AAAxnF++i1Q9sir41gLQrEhQnYaAEqiWaSs4ZGEqyKy4UmzCWDpIgCapnVJX6n5Ad9lygHvO8SN2\n",
              "JkI6d2PRozsgDLuGPAC1GJe+I0esblfiicm5AAAALgGeempDfwABBcjVe+CE9nnQwA44GtksK0LG\n",
              "sAGoG/I2V2ayQvjJ79qo+dVuZ8AAAABPQZp9SeEKUmUwUsEP/qpVAAAYqxV8HiAh2bSsRuPYSeW6\n",
              "o5LJQiKcWAeiPOJnXFyKfi3KlCDYAGDDnnok8F2Dt7zDQmRZfZbji69lYSqAKQAAABwBnpxqQ38A\n",
              "AENnKLszH/iFb06JRBse5vLIFv9hAAAAUUGagEnhDomUwIIf/qpVAAAYz3tEcuv6p7++kUCnEWJI\n",
              "JgL/g/BhU3JUIKOttk70+5PG9MU1Hovdh2Jp4M53HIO1kjRj/EsyLogi/8kMYAP5GAAAADRBnr5F\n",
              "FTw3/wAAQ2c19O8M7gawMlY+5LwAtfhOdzjOfp0cdMjO1Ulj2lAQANPU+2pmNI9YAAAAHwGe32pD\n",
              "fwAAQ2cluMxxUI7brBlwWJ4mTDSeLoCAYsEAAAAgQZrBSahBaJlMCCP//rUqgAAGK5mYEWVt6bQI\n",
              "nVCrCkgAAACmQZrlSeEKUmUwIIf//qpVAAAMZ/NChr3+xNlOac4pj7OpOFSe/2W8GcsejtI3vyhD\n",
              "SCO0z0qSe6nclGe1WFc/w3qziOtbdD1ovneqBlshmSRf4vw1ZbHteOTUlhUfi2sj3oGSx4b8o4js\n",
              "O8PdcyN7UWDNekY3S7hGzER8kkFN+3WVfDztrMBS76mO7uVpRkkGOZic1kleSEFRZGzZSpDnhuKp\n",
              "VVhlcQAAAGZBnwNFNEw7/wACjYwXbRUsqHUD7Up25mDGy+fT4cgiPagCXgbYAC6S0PP/A1MYyTlv\n",
              "TxL6wnOJQcsghSwjRrnmzHMG24O6PpRZYOUhQrdZ2+k2q0TuFyNnMxbfkyGYvWHEntqEw1gAAABD\n",
              "AZ8idEN/AAOfp4wI7swElikkBs4eHz5AWPvPcNd/FR4zsGFoBSPB2QBFZ4+YE+zdY5EnDsipyGPD\n",
              "Ci6BICkC71Ts8wAAAEUBnyRqQ38AA6BRDAvQShFLIEn3Z1er79TB5/eCfeUcD0G6V7lABcbdaM+B\n",
              "XFx2VBvT7PuMgj0TbbwswjoPrNsxKm1tm/MAAABPQZsnSahBaJlMFPBH//61KoAAAxXMOrmIBliQ\n",
              "EIo+ne1PJZ8OTGoEkeVulN6ebO4g0etu0g50fc1WPn7B6t7f4+a1AZBOCJnuHPy074Rl8QAAAEgB\n",
              "n0ZqQ38AA6ClVjlJ0AVUu13vfo6pqV8YWp+XlDUgPWROAFr0K5f+a41iqCDy/EpiD6fMIE7dHPte\n",
              "ZUnpGs1PgJ2XbJeDBvEAAAB3QZtKSeEKUmUwII///rUqgAADFa1egFYuiF2eJ5EXH4YjN77PAoe2\n",
              "PWPSKt3OXuP3Qxpiskza/o+gJq0txM5c7w9hcSFIy2RnMOFR35mZnJ9SU/xdGB5uydxLs9N13GII\n",
              "AV2GzVvJquGqDBjwFdTA5ZdrrFQ4bEAAAABRQZ9oRTRMN/8AA6B89BlA1+mgq4e3vuyyRHq3FZ5s\n",
              "vwnCP7gBGVyXdgO6YOfWNMmx0hurpct8uq9SI1XxseU7BbZhbWUZpNqbGoYlGbtHjerAAAAAHgGf\n",
              "iWpDfwADoFEMC9BKEUsgSfddV2chUlE+U9w7JwAAAFZBm45JqEFomUwIIf/+qlUAAAV3hvv+eS+G\n",
              "ABOttjZ1dTlmDiC5wl5Lvav0bvbNQ+LSAEOXnqyJyXXnLf08u+SAah6AyTBffKlrhSP2ieIhiCs4\n",
              "e4cQWAAAAEZBn6xFESw7/wAClOGC3gxm+jisQu348fSrnUygj6aYciSGQAulARVLlfPrsbWkc084\n",
              "vnnmpkKc09uc2KF21zUAdRVkW0toAAAAHwGfy3RDfwADn6eMCO7MBJYpJAaxickBOup/VwTBHb8A\n",
              "AAAmAZ/NakN/AAOgUQwL0EoRSyBJ911YYHZ2gTcSAGxPaDHMib24mFMAAAA8QZvPSahBbJlMCCH/\n",
              "/qpVAAAFd4btTLd8TwAf0i2OeuIUf6OaZff34PW+B4XKipUS9jQof3VkVBeNzCvfAAAAbUGb8Unh\n",
              "ClJlMFFSwQ/+qlUAAAWbhvv+tCUqAEso+SojIjh9KmCQc/hZDEdHLGlzjguHsE5wtUh2itniTnfo\n",
              "8xSATjcfj+SQn3KXdJwD/H1ja5JVPkhpLvlj9nwcLuIkh0y5cVyhlRE0WyEZSIAAAAAZAZ4QakN/\n",
              "AABApAAc5ArU+KOANZarl2/TUAAAACxBmhJJ4Q6JlMCCP/61KoAAAsuOov6D4gAP5Yyzo318KXoJ\n",
              "wH/pHHvpdu2PwQAAAH1BmjZJ4Q8mUwII//61KoAABQSfpABYdgXfMHjgPOAmID+qXwNfuuYt1TWV\n",
              "lOdiduJ7fj5zgJym7klIQL+KnB4trsT8FZtXZo3LsPk3a0Tnil/9K8xLZyo13RmNkXyz4X/wZSAY\n",
              "mnyiyvM2zug8I7OCuOoWFNOQpSpwgIRURAAAAGFBnlRFETw7/wACjYwXbRUsqHUD7Upufj4piyNO\n",
              "ivAt6u5HqW3JW0ARKhElkPTIq7Ri9pBoEkQWxERrNeCvl9o0AQ09tRU/M0QS8b2l6x0lIGEHd4zq\n",
              "pD99W+Rpy/DhixWwAAAAIwGec3RDfwADn6eMCO7MBJYpJAaxickB4HR3AHb045+dLK21AAAANAGe\n",
              "dWpDfwADoFEMC9BKEUsgSfddWGBV6jnNvnlME+2Qs0wUTBb+UQAQ2jYilsbF9RHXXI0AAABSQZp4\n",
              "SahBaJlMFPBH//61KoAABQvoJ8Pur0rLiMf/37AA2lJXxZQpB/XvMyBcld1Ttl/eltNHt9FmBdQd\n",
              "swtbULkzSJpmbef4dmFfwYADyh0Z0wAAAEYBnpdqQ38AA6ClVjlJ0AVUu13vfo6pqV6d8IhYdw6Z\n",
              "vp4AFsHzM+BWwMnxSEfsDE+Q3n5ZN58N7ev18uPytWU6C/9bUpuBAAAAdkGanEnhClJlMCCP//61\n",
              "KoAABjNwfwfltAAdE+o3i/ss3a+6HfERjCm7hqgCz2fUAHflxqHYWiyAbCWwUUo8a8fmLWUdiSu3\n",
              "27OUpP0KYvmjUWZ4q+7Fa43TzuulDcIjlHlLn5t4TZuFyWOmTewH2b0tsqRP7fAAAABEQZ66RTRM\n",
              "O/8AApTFwt3umFXlLP12/FxW+8fNvVGvl+ABxtQwI1AlSbU+LgLu6S7WXi5U1pM/s4vVpDG9zWpl\n",
              "5Q/N46kAAAApAZ7ZdEN/AAOfp4wI7swElikkBrGFCp3SYAOLxIAIfF1EEs98/ui3aBMAAABJAZ7b\n",
              "akN/AAOgUQwL0EoRSyBJ92dUPr4IQA3ZCNkWwtpkQCHweQIqhDkJiKrm9fQbnVR640H8IpH//uCU\n",
              "Lg6Gkl3vOVU+/PSFwQAAAH1BmsBJqEFomUwII//+tSqAAAxXMmOVln8hoALs1WhgSF929eEWu9wA\n",
              "GogF2K96oeiG1E3qj5fv9NfwZeRfGGZ8BdSDPb57m4jAiv+RBKzZuWo/RLgwMwPevgHNfaSBtoh6\n",
              "X2nFsWzQsYKWbBWYHD57yBSEVH/McyeX93+yQQAAAGNBnv5FESw7/wAClOGC3gxm+jisQvG6VzgP\n",
              "nA4dqRdmo0WbrYAFh9OMmA+srUDq+3So2zcKmD6L0MUPo3yk9dyId5e5cOAFEgDGB49WcTj9+UGG\n",
              "VGMgwdiHOS5Bv6GyDQ/wlOAAAAA2AZ8ddEN/AAOfp4wI7swElikkBwvES5dwzSsCJAAHHIfU81l1\n",
              "1Cu0frmgKEF7G3Hd7Pq8rD8/AAAALAGfH2pDfwADoFEMC9BKEUvqOfmSIBUe4GrJ7x1QP5hD/AdU\n",
              "oBwclfh2zLmBAAAAVUGbAkmoQWyZTBRMEf/+tSqAABbifpAAh+4YuMN0N/V2XBVBBeSehqonR7qj\n",
              "Ui+mW5D7dtkhEuYRxAUkl3HuGIa+71sAQM56v+YU5n6e+MdVl3a8jLwAAABMAZ8hakN/AAOgpVY5\n",
              "SdAFVYCMo2OhF1WsGIWjf/+KABYWkuMLLZgl9h0kM9aNcb9qyx4o/fx//pIEvGQCOnxM2iuc81QL\n",
              "mPKBHp5PWQAAAH1BmyZJ4QpSZTAgj//+tSqAADFbDqACrJF9Ct+p9R2vSxL+HgBPa8Zx5+Q0TWW2\n",
              "jeAM/pv0sG1RCvFi3pf5RRu5gxe3Blkvv1eMrXvr/xkixPiXAQRpAW5C/b1U85zcFi49Z9NKyfEl\n",
              "fCHpd1p2eA8HvYUip6tB1H48aD2BoAAAAEpBn0RFNEw7/wAClMXC8i8xxbu8/1i1uFUXJiSXu0G4\n",
              "oAC5QpdqbRReRHQgZ3su+El83CO1nyD9OqjfbxjvcBRPNQrAF/bVSlM6mQAAAFwBn2N0Q38AA5+n\n",
              "jSjzBss6SrMiA/hU4C4Aia5CQNvch80Msmqr9uBUiIXnw3uGITKb5UXQJchbtJTmqQdP7UOKcs2N\n",
              "yjDdzvJukgGvoE2QCky3OUIFtm6z7W6iDwAAAEMBn2VqQ38AA6BRDXA4jnSIf/7F8ANK7/3jF1n/\n",
              "hQwx9n7G2oGuv+1/Zh84ET+1/nr7/zc19TMwmwO6GrDFTZs2G/3NAAAAWUGbaUmoQWiZTAgj//61\n",
              "KoAAYrmSPvkADdSMTOu21n/E2h/uZIpHF/tS9OIk3NTmsfh8/uDYhbCQhCcZ93Z0V2JflBFW3RDH\n",
              "XLsIfJF6NQ+C5UkcQSXUjPA/AAAAQ0Gfh0URLDf/AAOgpVuBwamt4ObLH1uAoDn/9buAGeLud5j7\n",
              "mI7DNYylnLGCF0DwtRx9LqrshHh1SthYfQUUzLa6QJAAAABRAZ+oakN/AAOgUSIIGEz/H4SYnWAI\n",
              "mtN92fEdZOAE9YSkODFK5pDWoDA8KcKs3biEy7QfJvuvZ8Du7BL3P7X/SYx0/yjZMbUZy/APgJ3b\n",
              "TrUgAAAAWkGbrEmoQWyZTAgj//61KoAAxXMku+GGQg/4vAA32nGr9atvrekxF+WqBPo8BOQx02qa\n",
              "OqTMnY28BL1I5Rs/7P33tB2KBDwZbfcb9gNx5tuk8TZagTcQS2zxgQAAAFZBn8pFFSw3/wAENr30\n",
              "sWgBQbiS4wstdDsv/zV5W3Ip/o2pwLNyYytI8OYbtfRfsQxuda38FrkuPfoWuB5d9s9snqn8GfIo\n",
              "4Qa80oJ838AYdiDdBUBXwAAAAEkBn+tqQ38ABDa97f7+CTw3ADb4ozIkBbWhUi4BfzLeq06q2etB\n",
              "O9eniRrcftBtDBhm3es/vY9tfR6FDyg3DLJk3/12yo9C06z4AAAASkGb8EmoQWyZTAgj//61KoAB\n",
              "jNwfwgccAAsFbTfZPe8mTm4wvOK6yRDlPgQi5mWdjaOzlJIQLfNMPYjzEd1q8yCHiaBmlj89CwZb\n",
              "AAAAQ0GeDkUVLDv/AAYEEf+DQRoAcJKCjZzWdKaUSU78Xuh28A/VVxo9nTnqvPZQdgi8S+RiQ/+v\n",
              "N9AvHZW6GYM1BCVcn4sAAAA8AZ4tdEN/AAcU/QQARigM0xP5zI2rkxIbiw+iSBA1lQR0NdID7cJt\n",
              "Yg/CjEeLbTxGZAdGVrZwm9BrIHHpAAAAJAGeL2pDfwAIbXoCYz8G+TM2ReTLtiz8DLukvxfsw+0v\n",
              "MdsfMAAAAD1BmjNJqEFsmUwII//+tSqAAnDsWMgAvl7fjvFJP3u7G3gEBYUGOBK2pqUFtch9x80F\n",
              "QLYI09/0PAWYUgVAAAAAQEGeUUUVLDf/AA3XDcANz4v//DywC7H7MPokgQNRtoIYeiuZXgz7h5YC\n",
              "L85u3NKWUFGDuWjM6nRdzeN77AXzetsAAAAtAZ5yakN/ABDa94Bzg71JAA4Mb66PFMp4Qy5Me1vD\n",
              "7ZMXCskaQuh/yXsKSMraAAAAhkGad0moQWyZTAgj//61KoAYVZcjYt3cAEI2YVELSQPNnszFOUge\n",
              "o4KqWztweT90jLZes+rIWzRfaoMVONvI5O/nHcVBjZ0ELe4v1p8QggeiT2z/L3XfKbpLopd36jfW\n",
              "q+pGu+1sZ8Ev/AOcXjF6jZ2QUH93X48qqn1y4phGxGZ+ZsAG/QnAAAAATEGelUUVLDv/AFuVgBf8\n",
              "0iCPg9YcAAdeCuDkB+WlcC0Q/BKG8B+ZH8A9U1VTywbDTL+3PE2xhPLbOxFDQB0UaaKcpYTPJgfx\n",
              "PCfgu9MAAAA2AZ60dEN/ABsEK7gR6lv74zGADgxmdvRsM2U9qyx5dJG/M+gxDf/Sd3JULvDwLtis\n",
              "OxZJd5bAAAAANwGetmpDfwB/V6+OOylQtr1RgA2q5Bo3092Zobd87RQMvg0920m/nR+VnGASgf8D\n",
              "NKbvcJUGzZUAAABjQZq7SahBbJlMCCP//rUqgAYrbt0ABE6QLSx2oG9mArVl1ch0hlaXPuEvFHTW\n",
              "08S0s69LkeAQnaLQHgRIWTk/7tBT4wBFoSzoxWqQnRg26sk5/XsbPypYgda60sjCfz4cE2FBAAAA\n",
              "OEGe2UUVLDv/ABfSaD5A0wBACaW8cWJud/wDOPjbYgUAuw0fREJJu8GAIQVQF0zN1OMwwM5+0vmA\n",
              "AAAAJgGe+HRDfwAhmKfbIAQeiZhP+NAuII6Z6JZkN6Jo1wUBqQbGg4b9AAAAKwGe+mpDfwAhtgCQ\n",
              "AIfsQnLR/RqSn/AHBtOsJk+CyHMI6VeQ+hRQQ3TWXEAAAAAmQZr+SahBbJlMCCP//rUqgAYqknor\n",
              "S77QZ319VB1lRxouAVUoiyEAAAAjQZ8cRRUsN/8AIbGdOGtgVW1SiB7gx2BIgxgqiZxke3QGQj8A\n",
              "AAAaAZ89akN/AAgteyYVrXbUyweCoDCawzymquAAAABTQZsiSahBbJlMCCP//rUqgAAFC+gw2D3N\n",
              "Whq8Dd3tSpswAmVIvqQV1Bx6z5KAqmoC2E2eHHc0w6pmRbdFAB5HK+P+5NveVpjiEYvEllhVN/+k\n",
              "loAAAAAqQZ9ARRUsO/8ABd3DB7GFfLej7Jd6BIYOP5T8fDHDoALCezvV8NeUREI/AAAAHAGff3RD\n",
              "fwAIK+y2DK5c0E4VVfu/M90LCdxDnYAAAAAeAZ9hakN/AAgteyYVrXbUv8/yC/vZKT0pJXxulU+B\n",
              "AAAAJ0GbZkmoQWyZTAgj//61KoAAAoJM2CD3xHnVFwRP5pACpPjvw6D4wAAAABxBn4RFFSw7/wAF\n",
              "3cMHsYV8t6Psl3EC+abmUycnAAAAFgGfo3RDfwAIK+y2DK5c0ET28b4a6YEAAAAYAZ+lakN/AAgt\n",
              "eyYVrXbUuoHnb3B5TzaBAAAAHkGbqkmoQWyZTAgh//6qVQAAAwKFH+Q20RP6m1hufwAAAB1Bn8hF\n",
              "FSw7/wAF3cMHsYV8t6Psl3EDCfcUCnZGrAAAABwBn+d0Q38ACCvstgyuXNBE9ww5jclWLihWEqGA\n",
              "AAAAFgGf6WpDfwAILXsmFa121LqB53A7e0EAAABuQZvuSahBbJlMCCH//qpVAABjNpZnuOCvABrg\n",
              "dYtK3vKVM60gfvPfeb9AlqHFH5RHWvWD+O3UpnyxMT54tyY9SZJ54ugbNlJ3G4ufY/lhbYEOzJAM\n",
              "+yoRZ2YdT3n+uRDT3KOv1v2b81fgcQyAcqAAAAAkQZ4MRRUsO/8ABd3DB7GFlk4gHPaJav2LzyFY\n",
              "Sajr8yEmv+N+AAAAFgGeK3RDfwAIK+y2DK5c0ET28Zoa7oEAAABIAZ4takN/AAgteyYVr+aPbErI\n",
              "WY+E4PMgAW0gozBKYEQC+vuXIFhJ8/z4b29Pipcpsl0avGLrQTBIi88AGqjQq8ImCh3uErx3AAAA\n",
              "TUGaL0moQWyZTAgh//6qVQAAxYy+s58s7GP+MlHzgXslACW2gcxmcAqHviwHSmI0rl+Z/SLhBdkg\n",
              "x908gUbPfTuvFeONAxdHw6XsZbpBAAAAP0GaUEnhClJlMCCH//6qVQABVOee0Ik4Syb6txm3B4Vs\n",
              "difyuP32c107G1yZNoD4AL6196IH/VJCqquwBNSrKAAAAH1BmnRJ4Q6JlMCCH/6qVQABjNpfwjm+\n",
              "IBqjjHiiIgYrDAabr0jmv9Kk7AmsrIsdWPQ7hSklhAV2KdeY7MvpMUIWQX/A3xxJ9V64QBMepMxN\n",
              "qjGhgc2SiuMkX2fVu9nTt8LfCSWNVk95XJmJc4hWO/wOBftixIa/T0WCsR8+gAAAAEdBnpJFETw7\n",
              "/wAF3YuIx7D2ziQCl4qADjbC+6x84DNmmiPrrA0lPnmGs64giSLHsbp+JHaxzuxN9zf80FFfCDBf\n",
              "O+faxO57wQAAACYBnrF0Q38ACCvsqBqHuwAOtmuvisRHMCJSSr9n4PcrYW8GsOeIGwAAAC4BnrNq\n",
              "Q38ACC17LdblyFFx7BEkVkIOgA4f2d0R8MmSgVr+JYE8EsBmOqX3y3llAAAAI0GatUmoQWiZTAgh\n",
              "//6qVQABirGe1wMuIFEvYJuhx3X3lRFxAAAAQkGa10nhClJlMFESwQ/+qlUAAYqxVrQAAK2YxRrs\n",
              "IZ5Mff/4NpoD/B0fEd+Rcin4typQg2jx2gX6XVdK4K9x91jaxAAAAB0BnvZqQ38ABDZydycyy4YT\n",
              "Cqj2QGXIbie2Esm3cQAAAGZBmvhJ4Q6JlMCCH/6qVQABirEzy7/M9l2P2pxlgAEPub8VCvwAi/8/\n",
              "b5dM9cxLsLgcagNVvRAb5hiWp2JIYMscpRmn+KwrQhIYB929M8TaIQwBiKkshqAfuSe1jlPXHDtZ\n",
              "iYNMYUEAAABAQZsZSeEPJlMCCP/+tSqAAYrmFOQrTwkEzv3V06+sB+mGknuE8TofYZfUzfLaMyY7\n",
              "xD6gp3amTEso7Da4gnpAWAAAA4lliIIABP/+97GPgU3IAA2XOop6H+EVsfSQUXqx2aBk6gAAAwAA\n",
              "iYGOFkC1uVpxUAAA35CcWPHLy/sAvJzIYYHDrPCcoumUy4PQGefgWZjB9anVZRAM/JYf4Wz00la5\n",
              "Q9lqr+Z3ZXaRwMRBXaFPYejYpdnThB6EIrJDCNmJcD/afyep4RtQmOXx3L6vSlZuw3txBwqLZBQC\n",
              "zcElKxBCzvW11LgOThjwDeONodnqGYUXz27j79pWOhO24pMH41jt0Qo655QFK/E3wGJa14TdqIw+\n",
              "Bc8mbELRm7jQ+OWlaXP8pg3qZhP3lmRqOGlKtst4k22h81QdiINObgJ7xU4QXbvPEZe5FMHlWVCK\n",
              "Kh8xCpEsO72ed19Zdd/1UjpLEHQOlqlY3kSx2ZBMeOoQnYNf3ClmYT/G7mpZB9psqW8LEDyu7dWq\n",
              "RhAGnijAVJSn8UhnmUAQUr4IMm8EECg0Nx85hJlNgeJrGdzRvUy54EJRyZW8gPpi9q+84+DZRPhO\n",
              "m/DsEK0G/Bk4unE4f8IF3cdGpl6+XL0cgXgys5MZgdTuEDdbm9zqmnAm+4y7Doic5x9g6PnrWn23\n",
              "S6h8BS7R1tJ6XTHVSquXWj3dzdSHh5RE0rxc4QcJmS6MyFT+/982hfWGKVhWo8FhnXAc8rgAs4WZ\n",
              "ptWVXgkDUwCPbkkiyRkI9By295AoNC3ccplz0w36E65Dza0sDZWnAP1ngURcytQhHoK9dvgwlMSb\n",
              "ti2os5XJMIv6ErHaLf//o2/w826FYUwjuIr/6TD9pxyjTZxctWvbKFU6gVjAHaglIFQRKbrDYgsn\n",
              "ZdEWDO1gSXf4gYrsVSQgs3iVLBF/8RP1wtnNVyK1q6wWc+KzuFizYIfa+N5dOYBnV86FNeutolCf\n",
              "0vvQQQ1ELTxAuLnoMK3HfJrDP4zYd6sJ5wHj3Y2FfPWoh9a4j/nI/yQ6tyLQVCvjeJu1Uqcngp2q\n",
              "nhDpU5s650bxS5bJuVjJ+tPXicVM9c8dD1ZdsQDrNT/KZeJPaimAQ3sTpRpAmOI9nDFYik/2W7zY\n",
              "2DHMtntKuHI8zHW5kxN4QZBMCURULWsIEt+ML1G0VSvgNFt1/l7wf6lydgjgqkEoNkw6CbvKObCz\n",
              "m4eKwn2n4hAYwKNYZpLgfrrvv0f65QgWUI2yWj+9x1M6QpQdJlnQq4tDSUP8APPsxV4FUWyFvf9X\n",
              "STxKYqfAOACQPQAGFQAAAJhBmiRsQQ/+qlUAKXrdgADa/jOQlpoGSQwowpeRjNzq2NmPRH9WtSm2\n",
              "Bp3THT7GD/F9ik52gX9MFCzqg6HhCsNrEeizrxf274CZz6nBiQBA3aaS2TgKD6hdHlvDOzOZa0VE\n",
              "hmaKI+cuLAl33Z1n47yYhEywHr/Y+fLKaKNurI+HHR3zAwXYn+mPauDKd29gngJA9zYOFE5JgAAA\n",
              "AFlBnkJ4gj8ADWtcEZWk2p8qbMiutd71Fedul3xp768AEkj4dswfKBJ4Oz34gxpanqeaNOAWE6Tj\n",
              "qSIXvor+pC/D2PZr2SiZSBefdK3mMh3hVSm2f8h+zdBA2QAAADsBnmF0Q38ACGwrkpZWL4YqtkAB\n",
              "bSBT6rz6hpHE0WPTUSPpDwAuwXWKzhiWihT5T4PN9jNWkzHXITDZ4QAAACYBnmNqQ38AENnJ3FH1\n",
              "FIXnujGJHBWwrPDAUsSA5LaQpKD5EabvlAAAAHJBmmVJqEFomUwII//+tSqABgNavQeMd9oQVHc3\n",
              "YU0iYP/re6gC+E7ST+FVP0qLir3v9PUBTMIpQKQ3hHi/3EtPE3fwJUG42n4E8RSYVz6SAdigzrOv\n",
              "RKt6vi18zGDymwWbgWnsLt/HoYWkijrz7IpF55YAAABRQZqHSeEKUmUwURLBH/61KoADFUDHJgG/\n",
              "QXc//4vABAcdr9LRwILovJyq6VmIaHjdRGugJABVW4rVEEnvpc1iXhCuLNUz9HCjYhA5+Yh2CDKh\n",
              "AAAAIQGepmpDfwAQ22P1800VX6a5Q+tXbWir1Oy3KWQioC0xZQAAALdBmqtJ4Q6JlMCCH/6qVQAw\n",
              "xFGUUgABiH++DF2jtzRPFPDa1HgIFxun81Mzev7YgnJVWISL/w/5IvW9OVNRhzX8X9hGepKpCRri\n",
              "wHm62CJiicIVrl0YAPasdC3IwuviqdW+EDlxwuD2KJH+P5ENR8ywlarcY7oqJDmVDcT6nFz7xi+S\n",
              "7ms6ma2AAN0J3XlPBSk/YaF8oOWxUgIqxFh2KFEve/CHKN0813p/fr8/h+27V0hK2Sxi2UEAAAA3\n",
              "QZ7JRRU8O/8AW5WAF/7RtawtRTtAA5ux3kcAqND+rt6z+2whkcvX1PuDYhW12x4l9eIsCdVuWwAA\n",
              "ADQBnuh0Q38AIauhIeyVREPkNEm7N4AWktjt6NhmyntWWPLpI35nzhCCWmX26ld9DPtTSGqZAAAA\n",
              "aQGe6mpDfwB/V6+OQkdW4AIgsBQbhJxnxF+Cc1PyCeCyce2NEhN4PJbMMLkUTVRm/65Svn9Yj4qb\n",
              "NZHEUkUpS+XD4WleSOE3JsZJZuwmr6So+luTh7tpkYTUjBgHy91Jw+qfe+CQ8VyJiwAAACZBmu9J\n",
              "qEFomUwIIf/+qlUADFZdSt8roJXVZoD6QwdbnqVWCNu1BQAAAB5Bnw1FESw7/wAYBCUiTSql9UHc\n",
              "vLujq10WK0+nWXkAAAAeAZ8sdEN/ACGdcPcAIU19OZtCpfT+RJybCo9USkYEAAAAFwGfLmpDfwAh\n",
              "sZ3Qs2oFxTlwtkzFXCrKAAAAK0GbMEmoQWyZTAgh//6qVQABQvi9erB5UDw25PxalACofCSrqnoN\n",
              "OjDcabUAAAAiQZtRSeEKUmUwII///rUqgABQTY8qc6iuhQCdKsI4EkpllgAAAGNBm3NJ4Q6JlMFN\n",
              "EwR//rUqgABQvoMMvevxLqqmdUAI+Q/y+cGPZybGrYQktDZTJdkpyR+CLAI1xE6MJtMlTuQipqks\n",
              "/tBV9JEfkXtbf7PX4hMapbP9Olel4dme8DE1ItQ2WYAAAAAYAZ+SakN/AAG6AFErjng4t9CQ5cS8\n",
              "EDrhAAAAZEGbl0nhDyZTAgj//rUqgAAUL6Fp7zDYortLQN/BkWaAJFx2o/g7wOq5o+Ag4Cv9p/H+\n",
              "RDGGYZKDmxfmG8iUAz+rnJ8DfSR95Kbjg0NkxKLSEcL5/0piUWp3Yua+3zE4tfa4xH8AAAAeQZ+1\n",
              "RRE8O/8AC54wWr+Sph9kwWvOvdz3uzBNa0PhAAAAFwGf1HRDfwAQV9ksAZNSWB8vxO8sqoAgAAAA\n",
              "FQGf1mpDfwAQWvYKAVo42CtuneSwQAAAADFBm9tJqEFomUwIIf/+qlUAABQYwbbpMjTczaIBik1Y\n",
              "POzbD+WKHr2vV20X/liezMO1AAAAF0Gf+UURLDv/AAu7hgUvnp28vtz7QK2CAAAAFQGeGHRDfwAQ\n",
              "V9kpANkceVhzYEsugAAAAB4BnhpqQ38AEFr2CgFg14RMLdduM0fvbXRWn7nhelkAAAAoQZoeSahB\n",
              "bJlMCCH//qpVAAAUEBboSIAm9X1HTpCHhVNQoUE+9PAgIAAAABhBnjxFFSw3/wAQXIyR/xM75AAk\n",
              "7QCyav0AAAAVAZ5dakN/ABBa9goBL7iRHtVDqE35AAAAKEGaX0moQWyZTAgh//6qVQAAFC+L16sJ\n",
              "jG/QqYV+kFaXOQNppluYdoAAAABnQZphSeEKUmUwUVLBD/6qVQAAYzaVs7hj34AibLpp0Il70l+j\n",
              "U46eXkJaWOoplIGyOopYS4uypf892znDn2EvrRDwUB+UGZRmEDX3m/G4uOMaN50KFNjIgu23HsV2\n",
              "gbDCWyEhkIirZwAAACIBnoBqQ38AAQ2cnYszrMt4CQgIWTbNv01Qcn+4hVwr8nKAAAAAPUGagknh\n",
              "DomUwIIf/qpVAADFjL6zqSYER+fSQnsCkRpwAGyjAqmCEdVQ0p8umfhLy2q5+d92Rvv/rSVMsmEA\n",
              "AABPQZqkSeEPJlMFFTwQ//6qVQAAxg6SxJ/ZP8IAAD+tTUGjgZPnYBgp2f91V0kz/rPR6yLltOW4\n",
              "uRASni78RM64HP9riMcUNUzyBPvk0gNpMQAAACkBnsNqQ38AAhtsJaxSo1gWYwA+MX4YkpZK7L9S\n",
              "cUjbtkWV7KxyX+GzwAAAAIJBmshJ4Q8mUwIf//6plgAGBKI+v2iQd0AJ1TYTWfA5GYU3oHQZ1Dgd\n",
              "k/fvePtsD5ipDekt+hYKBaGU1oTv3+QD3qPoumr6kX8dKg19nGML2wlFmJjHbKVCMZ2nfq7ajTB6\n",
              "elXyyzgRFIwSBxHBxTS0E1Nk6sq60wP9ZKDtjK/O4/xcAAAAlEGe5kURPDv/AAueMF2APB4OIp8n\n",
              "vS0BWykP/+aAAzpdUcEn/vJjAWRB1sh8dsaqqj/TWJ2s+OXospoTYsN7KE8FnoRYg+lSAHvZSfz0\n",
              "/RObz3+SGr4poErcEj6E206TPyJTLSb8o4EtLdYZoXw6503mOJFmO5aEXdBxV2d/M7604W8czfXY\n",
              "NwrzWbaXB4rZjpKdES8AAABTAZ8FdEN/ABBX2UoYdMRxrpyq+FTblgCJrkJYp54CBN7j6nuw+YFY\n",
              "LtakRqvjHBAu8WBa6zLaks7YlkBqyBNvRAgDrdwDvu7BE5b8P3tMIGzvsJgAAAAuAZ8HakN/ABBa\n",
              "9jAq6Rwjt8Wnubdo4DcM8bWLDfcy343KhjqPdqW76cyvjxgCpwAAAIJBmwlJqEFomUwIf//+qZYA\n",
              "E55X/gywDgDjEKo/hB6h4K3fMH1ks/2o6f01Af5Ce9ztIjmG8ha6F09G3aghwcRcI8CdVbkaIYgi\n",
              "d+OQidzjKYYYf85hUl/Hkui6cXMAleXqtfGqcB/SpCM/tMwHlSzYAJO000nLpl9wtGLMfJ5awKKA\n",
              "AAAATEGbKknhClJlMCCH//6qVQAFBAVe/AATUG2RXwAU7/3mtyFlBTUwX/6IdlqTrbIIQKJZoeJx\n",
              "pU62W9ZKXqaGom6dvRdyltJ9F4pW810AAABdQZtLSeEOiZTAgh/+qlUABQvjI0Io3AluRGhf9WwG\n",
              "ka/YvVU8RjqIUvTTQ4/z6DQleBWmqgyZmR82Eb+8W5KJcbNAB05g7GIaeR3QUw9Ud6OWw4jmSg7j\n",
              "H48BVKKvAAAAWUGbbUnhDyZTBRE8EP/+qlUAAxVi2upwqt8IAAFZOw/qslmJpT+qet/86JduSGJV\n",
              "hf0dcXIn+humifvQdhkfShKRHLFjLsL+TCtQvNbvw9dOtOzLEI2NvruBAAAAHwGfjGpDfwAIbOTu\n",
              "N61C7CBkTD41NejQSC0zXSC+u4EAAABCQZuQSeEPJlMCHf/+qZYAGAlC0ApMW8fCWM4BjD3Q0I5D\n",
              "2VGBU38cKrwFgoF8MQci+qQW/NPgnTWw9bl4SvrzJCPgAAAAH0GfrkURPDf/ABDa9fO0HngELjKW\n",
              "8oejafmHrMwK4P8AAAAgAZ/PakN/ABDa9WSoxMZjrJ95+FnHGF9SWMTDq/vnllEAAAAvQZvRSahB\n",
              "aJlMCG///qeEAC+4cgkCEpG+Og0xrxY6HAC2j6R8ore1YOQRuLUiGpAAABAKbW9vdgAAAGxtdmhk\n",
              "AAAAAAAAAAAAAAAAAAAD6AAAdTAAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAA\n",
              "AAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAADzR0cmFrAAAAXHRr\n",
              "aGQAAAADAAAAAAAAAAAAAAABAAAAAAAAdTAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA\n",
              "AAABAAAAAAAAAAAAAAAAAABAAAAAAbAAAAEgAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAHUw\n",
              "AAAIAAABAAAAAA6sbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAAoAAAEsABVxAAAAAAALWhkbHIA\n",
              "AAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAAOV21pbmYAAAAUdm1oZAAAAAEA\n",
              "AAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAADhdzdGJsAAAAs3N0\n",
              "c2QAAAAAAAAAAQAAAKNhdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAbABIABIAAAASAAAAAAA\n",
              "AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAMWF2Y0MBZAAV/+EAGGdk\n",
              "ABWs2UGwloQAAAMABAAAAwBQPFi2WAEABmjr48siwAAAABx1dWlka2hA8l8kT8W6OaUbzwMj8wAA\n",
              "AAAAAAAYc3R0cwAAAAAAAAABAAABLAAABAAAAAAYc3RzcwAAAAAAAAACAAAAAQAAAPsAAAg4Y3R0\n",
              "cwAAAAAAAAEFAAAAAQAACAAAAAABAAAMAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAA\n",
              "AAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAAAwAAAAAAQAABAAA\n",
              "AAABAAAMAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAADAAAIAAAA\n",
              "AAEAAAwAAAAAAQAABAAAAAABAAAIAAAAAAEAABAAAAAAAgAABAAAAAABAAAIAAAAAAEAAAwAAAAA\n",
              "AQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABAAAAAAAgAABAAAAAAB\n",
              "AAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABAAAAAAAgAABAAAAAABAAAMAAAAAAEA\n",
              "AAQAAAAABQAACAAAAAABAAAMAAAAAAEAAAQAAAAAAQAACAAAAAABAAAMAAAAAAEAAAQAAAAAAQAA\n",
              "DAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAADAAAAAABAAAE\n",
              "AAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAgAACAAAAAABAAAMAAAAAAEAAAQA\n",
              "AAAAAQAAEAAAAAACAAAEAAAAAAEAAAwAAAAAAQAABAAAAAACAAAIAAAAAAEAABQAAAAAAQAACAAA\n",
              "AAABAAAAAAAAAAEAAAQAAAAAAQAADAAAAAABAAAEAAAAAAEAAAgAAAAAAQAAEAAAAAACAAAEAAAA\n",
              "AAEAAAgAAAAAAQAAEAAAAAACAAAEAAAAAAEAABAAAAAAAgAABAAAAAABAAAIAAAAAAEAAAwAAAAA\n",
              "AQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAAAgAAAAAAQAAEAAAAAAC\n",
              "AAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAACAAAAAABAAAMAAAAAAEA\n",
              "AAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAAAgAAAAAAQAAEAAAAAACAAAEAAAAAAEAABQAAAAAAQAA\n",
              "CAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAI\n",
              "AAAAAAEAABAAAAAAAgAABAAAAAABAAAMAAAAAAEAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAMAAAgA\n",
              "AAAAAQAAEAAAAAACAAAEAAAAAAEAABAAAAAAAgAABAAAAAABAAAMAAAAAAEAAAQAAAAAAQAACAAA\n",
              "AAABAAAQAAAAAAIAAAQAAAAAAQAADAAAAAABAAAEAAAAAAEAAAwAAAAAAQAABAAAAAABAAAQAAAA\n",
              "AAIAAAQAAAAAAQAACAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAAAwAAAAA\n",
              "AQAABAAAAAABAAAQAAAAAAIAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAAB\n",
              "AAAIAAAAAAEAAAwAAAAAAQAABAAAAAABAAAIAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEA\n",
              "AAQAAAAAAQAADAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAA\n",
              "FAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAMAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAI\n",
              "AAAAAAEAAAAAAAAAAQAABAAAAAABAAAQAAAAAAIAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAABQA\n",
              "AAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAABQAAAAAAQAACAAA\n",
              "AAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAQAAAA\n",
              "AAIAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAA\n",
              "AQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAAB\n",
              "AAAIAAAAAAEAAAAAAAAAAQAABAAAAAACAAAIAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEA\n",
              "AAQAAAAAAQAACAAAAAABAAAMAAAAAAEAAAQAAAAAAwAACAAAAAABAAAUAAAAAAEAAAgAAAAAAQAA\n",
              "AAAAAAABAAAEAAAAAAEAAAgAAAAAAQAADAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAA\n",
              "AAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAACAAAIAAAAAAEAAAwA\n",
              "AAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAA\n",
              "AAABAAAAAAAAAAEAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAAAgAAAAAAQAADAAAAAABAAAEAAAA\n",
              "AAEAAAgAAAAAAQAADAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAA\n",
              "AwAACAAAAAABAAAMAAAAAAEAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAAAgAAAAAHHN0c2MAAAAA\n",
              "AAAAAQAAAAEAAAEsAAAAAQAABMRzdHN6AAAAAAAAAAAAAAEsAAAFRgAAAucAAAA0AAAAswAAADUA\n",
              "AAArAAAAJwAAAFMAAAAsAAAAKAAAACEAAABBAAAAIwAAADMAAAAmAAAAeAAAAC0AAAAhAAAAIwAA\n",
              "AFUAAABYAAAARwAAAFwAAAAsAAAAUgAAAG4AAABaAAAAXQAAAEcAAAB+AAAAMgAAAGMAAABXAAAA\n",
              "MQAAADQAAACHAAAAQAAAAEcAAABtAAAARgAAAC0AAAAxAAAAcwAAAEQAAAAvAAAAowAAAFgAAABZ\n",
              "AAAAYAAAAEMAAABuAAAAUQAAALcAAABBAAAAugAAAHcAAABCAAAAdQAAACwAAACjAAAAmAAAADwA\n",
              "AABgAAAAngAAAFsAAAB+AAAATQAAAEkAAABhAAAAMQAAAGkAAABfAAAASwAAALYAAAB4AAAAWgAA\n",
              "AG4AAABNAAAAawAAAFoAAABrAAAAWQAAADcAAAAsAAAAXQAAAC8AAABIAAAAOwAAADEAAAAkAAAA\n",
              "NwAAAIsAAAAzAAAAKQAAACkAAAAuAAAAJwAAADQAAABPAAAAJwAAAG4AAABSAAAAJwAAADUAAABF\n",
              "AAAAdQAAADMAAAAvAAAATQAAAF0AAAAzAAAATAAAAD4AAABhAAAAMAAAANIAAABgAAAAMQAAAHAA\n",
              "AAAwAAAAPwAAACgAAACYAAAAkgAAACoAAAA6AAAAzgAAADYAAACBAAAAJgAAAE4AAAB8AAAALwAA\n",
              "ACsAAAAvAAAANAAAAFQAAAAuAAAAJAAAACgAAABEAAAAKAAAAD0AAAAwAAAAHgAAAGUAAAAiAAAA\n",
              "KwAAAEcAAAAiAAAAMAAAAFQAAAAqAAAAKgAAAGgAAAAyAAAAUwAAACAAAABVAAAAOAAAACMAAAAk\n",
              "AAAAqgAAAGoAAABHAAAASQAAAFMAAABMAAAAewAAAFUAAAAiAAAAWgAAAEoAAAAjAAAAKgAAAEAA\n",
              "AABxAAAAHQAAADAAAACBAAAAZQAAACcAAAA4AAAAVgAAAEoAAAB6AAAASAAAAC0AAABNAAAAgQAA\n",
              "AGcAAAA6AAAAMAAAAFkAAABQAAAAgQAAAE4AAABgAAAARwAAAF0AAABHAAAAVQAAAF4AAABaAAAA\n",
              "TQAAAE4AAABHAAAAQAAAACgAAABBAAAARAAAADEAAACKAAAAUAAAADoAAAA7AAAAZwAAADwAAAAq\n",
              "AAAALwAAACoAAAAnAAAAHgAAAFcAAAAuAAAAIAAAACIAAAArAAAAIAAAABoAAAAcAAAAIgAAACEA\n",
              "AAAgAAAAGgAAAHIAAAAoAAAAGgAAAEwAAABRAAAAQwAAAIEAAABLAAAAKgAAADIAAAAnAAAARgAA\n",
              "ACEAAABqAAAARAAAA40AAACcAAAAXQAAAD8AAAAqAAAAdgAAAFUAAAAlAAAAuwAAADsAAAA4AAAA\n",
              "bQAAACoAAAAiAAAAIgAAABsAAAAvAAAAJgAAAGcAAAAcAAAAaAAAACIAAAAbAAAAGQAAADUAAAAb\n",
              "AAAAGQAAACIAAAAsAAAAHAAAABkAAAAsAAAAawAAACYAAABBAAAAUwAAAC0AAACGAAAAmAAAAFcA\n",
              "AAAyAAAAhgAAAFAAAABhAAAAXQAAACMAAABGAAAAIwAAACQAAAAzAAAAFHN0Y28AAAAAAAAAAQAA\n",
              "ACwAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAA\n",
              "AC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU3LjgzLjEwMA==\n",
              "\">\n",
              "  Your browser does not support the video tag.\n",
              "</video>"
            ]
          },
          "metadata": {},
          "execution_count": 51
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YPkVMUtbdObo"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}